Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当JSONArray提供空值时显示文本-android_Java_Android_Arrays - Fatal编程技术网

Java 当JSONArray提供空值时显示文本-android

Java 当JSONArray提供空值时显示文本-android,java,android,arrays,Java,Android,Arrays,我从JSONArray获取数据,当数据为空时,我需要显示一条文本,说明无数据。这是代码。我在执行此操作时出错 List<NameValuePair> params = new ArrayList<NameValuePair>(); json = jParser.makeHttpRequest(url_all_events, "GET", params); try { events = json.getJSON

我从
JSONArray
获取数据,当数据为空时,我需要显示一条文本,说明无数据。这是代码。我在执行此操作时出错

 List<NameValuePair> params = new ArrayList<NameValuePair>();

        json = jParser.makeHttpRequest(url_all_events, "GET", params);

        try {

            events = json.getJSONArray(TAG_EVENTS);

            if(events.length() == 0){


                TextView txno = (TextView) findViewById(R.id.no_events);
                txno.setVisibility(View.VISIBLE);


            }else{
                for (int i = 0; i < events.length(); i++) {
                    JSONObject c = events.getJSONObject(i);

                    id = c.getString(TAG_ID);
                    date = c.getString(TAG_DATE);
                    venue = c.getString(TAG_VENUE);
                    time = c.getString(TAG_TIME);



                    // creating new HashMap
                    HashMap<String, String> map = new HashMap<String, String>();

                    // adding each child node to HashMap key => value
                    map.put(TAG_ID, id);
                    map.put(TAG_DATE, date);
                    map.put(TAG_TIME, time);
                    map.put(TAG_VENUE, venue);


                    // adding HashList to ArrayList
                    eventList.add(map);
                }
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

当我收到空值时如何设置文本?

events
的赋值:
events=json.getJSONArray(TAG\u events)将不起作用,并将引发异常,因为没有
JSONArray

解决此问题的一种方法是在
catch
子句中设置错误,如下所示:

List<NameValuePair> params = new ArrayList<NameValuePair>();
json = jParser.makeHttpRequest(url_all_events, "GET", params);

try {
    events = json.getJSONArray(TAG_EVENTS);

    if(events.length() == 0) {
        throw new JSONException("Content was empty");
    } else {
        for (int i = 0; i < events.length(); i++) {
            id = c.getString(TAG_ID);
            date = c.getString(TAG_DATE);
            venue = c.getString(TAG_VENUE);
            time = c.getString(TAG_TIME);

            // creating new HashMap
            HashMap<String, String> map = new HashMap<String, String>();

            // adding each child node to HashMap key => value
            map.put(TAG_ID, id);
            map.put(TAG_DATE, date);
            map.put(TAG_TIME, time);
            map.put(TAG_VENUE, venue);

            // adding HashList to ArrayList
            eventList.add(map);
        }
    }
} catch (JSONException e) {
    TextView txno = (TextView) findViewById(R.id.no_events);
    txno.setVisibility(View.VISIBLE);
}
List params=new ArrayList();
json=jParser.makeHttpRequest(url\u所有事件,“GET”,参数);
试一试{
events=json.getJSONArray(TAG_events);
if(events.length()=0){
抛出新的JSONException(“内容为空”);
}否则{
对于(int i=0;ivalue
地图放置(标签标识,标识);
地图放置(标记日期、日期);
地图放置(标记时间,时间);
地图放置(TAG_场馆,场馆);
//将哈希列表添加到ArrayList
添加(地图);
}
}
}捕获(JSONException e){
TextView txno=(TextView)findViewById(R.id.no_事件);
txno.setVisibility(视图可见);
}

events JSONArray
中没有内容时,这也会引发异常。但是异常将被捕获并显示一条您已经设置好的消息(我想)。

events
的赋值:
events=json.getJSONArray(TAG\u events)将不起作用,并将引发异常,因为没有
JSONArray

解决此问题的一种方法是在
catch
子句中设置错误,如下所示:

List<NameValuePair> params = new ArrayList<NameValuePair>();
json = jParser.makeHttpRequest(url_all_events, "GET", params);

try {
    events = json.getJSONArray(TAG_EVENTS);

    if(events.length() == 0) {
        throw new JSONException("Content was empty");
    } else {
        for (int i = 0; i < events.length(); i++) {
            id = c.getString(TAG_ID);
            date = c.getString(TAG_DATE);
            venue = c.getString(TAG_VENUE);
            time = c.getString(TAG_TIME);

            // creating new HashMap
            HashMap<String, String> map = new HashMap<String, String>();

            // adding each child node to HashMap key => value
            map.put(TAG_ID, id);
            map.put(TAG_DATE, date);
            map.put(TAG_TIME, time);
            map.put(TAG_VENUE, venue);

            // adding HashList to ArrayList
            eventList.add(map);
        }
    }
} catch (JSONException e) {
    TextView txno = (TextView) findViewById(R.id.no_events);
    txno.setVisibility(View.VISIBLE);
}
List params=new ArrayList();
json=jParser.makeHttpRequest(url\u所有事件,“GET”,参数);
试一试{
events=json.getJSONArray(TAG_events);
if(events.length()=0){
抛出新的JSONException(“内容为空”);
}否则{
对于(int i=0;ivalue
地图放置(标签标识,标识);
地图放置(标记日期、日期);
地图放置(标记时间,时间);
地图放置(TAG_场馆,场馆);
//将哈希列表添加到ArrayList
添加(地图);
}
}
}捕获(JSONException e){
TextView txno=(TextView)findViewById(R.id.no_事件);
txno.setVisibility(视图可见);
}

events JSONArray
中没有内容时,这也会引发异常。但是异常将被捕获并显示一条您已经设置好的消息(我想)。

虽然Alex van den Hoogen的回答是正确的,但我想指出,有两种类似的方法可以从
JSONObject
提取值:

  • getJSONArray()
    如果该键没有值,则抛出异常
  • optJSONArray()
    在这种情况下返回null
您可以像这样使用后一个:

events = json.optJSONArray(TAG_EVENTS);

if (events == null || events.length() == 0) {
    TextView txno = (TextView) findViewById(R.id.no_events);
    txno.setVisibility(View.VISIBLE);
} else {
    ...
}

虽然Alex van den Hoogen的回答是正确的,但我想指出,从
JSONObject
中提取值有两种类似的方法:

  • getJSONArray()
    如果该键没有值,则抛出异常
  • optJSONArray()
    在这种情况下返回null
您可以像这样使用后一个:

events = json.optJSONArray(TAG_EVENTS);

if (events == null || events.length() == 0) {
    TextView txno = (TextView) findViewById(R.id.no_events);
    txno.setVisibility(View.VISIBLE);
} else {
    ...
}

json解析器中有一个问题。从那里只发生异常和错误。在解析器抛出错误后,我检查了其中的log.d对话框,这是故意的错误。我认为JSON解析器是正确的。无论如何,@Alexander Sukharev answer/addition有一个更干净的解决方案。json解析器中有一个问题。从那里只发生异常和错误。在解析器抛出错误后,我检查了其中的log.d对话框,这是故意的错误。我认为JSON解析器是正确的。无论如何,@Alexander Sukharev answer/addition有一个更干净的解决方案。谢谢你指出这一点。我也会
返回
在设置
TextView
后,这使得代码更具可读性,但这只是吹毛求疵:)。我在解析数据org.json.JSONException时出错:org.json.JSONObject$1类型的值null无法转换为JSONObject Error似乎有其他行给出了一个异常。对
JSONObject c=events.getJSONObject(i)做同样的工作和其他地方。确保
JSONArray
的元素是
JSONObject
s,而不是
String
s或其他元素。如果无法修复,请告诉我们错误发生在哪一行代码上,并发布您的json。感谢您指出这一点。我也会
返回
在设置
TextView
后,这使得代码更具可读性,但这只是吹毛求疵:)。我在解析数据org.json.JSONException时出错:org.json.JSONObject$1类型的值null无法转换为JSONObject Error似乎有其他行给出了一个异常。对
JSONObject c=events.getJSONObject(i)做同样的工作和其他地方。确保
JSONArray
的元素是
JSONObject
s,而不是
String
s或其他元素。如果无法修复,请告诉我们错误发生在哪一行代码上,并发布json。