如何检查一个特定的JSON对象是否可用?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (44)

我有JSON文件如下所示,它必须被转储到ArrayList中:

{
 "main1" : [
  {
     "child1" : valueA,
     "child2" : valueB,
     "child3" : valueC,
  },
  {
     "child1" : value1,
     "child3" : value3,
  },
 ],
 "main2" : "valueMain2"
}

元素child2必须被检查,如果它存在或不存在,然后取值。你可以看到它没有出现在第二个数组中。

我正在使用本机JSON(org.JSON)Java代码如下:

ArrayList<HashMap<String,String>> myList = new ArrayList<HashMap<String,String>>();
JSONObject json = <my_json_object>;

JSONObject getchild2;

JSONArray jArray = <my_json_object>.getJSONArray("main1");
for(int j = 0; j < jArray.length(), j++){
  HashMap<String,String> map = new HashMap<String,String>();

  map.put("First Value", jArray.getJSONObject(j).getString("child1"));
  map.put("Third Value", jArray.getJSONObject(j).getString("child3"));

  getchild2 = jArray.getJSONObject(j).getJSONObject("child2");
  if(getchild2 == null){
    map.put("Second Value", "Some Dummy Value");
  } else {
    map.put("Second Value", jArray.getJSONObject(j).getString("child2"));
  }
 myList.add(map);
}

我怎样才能做到这一点?

<my_json_object>使用原生URL解析,因为我在此处获得URL请求的HTTP响应:http : //mobisys.in/blog/2012/01/parsing-json-from-url-in-android/

它不起作用,因为错误如下:

E/AndroidRuntime(664): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
提问于
用户回答回答于

无论如何,我用谷歌搜索获得了解决方案:我重新构建它,

 if (!jArray.getJSONObject(j).has("child2")) {
  map.put("Second Value", "N.A");
 } else {
  map.put("Second Value", jArray.getJSONObject(j).getString("child2"));
 }

创建JSONObject getchild2 = jArray.getJSONObject(j).getJSONObject(“child2”); 是相当,不必要的。

用户回答回答于
getJSONObject("child2");

如果child2不存在,会抛出异常。试试这个:

getchild2 = jArray.getJSONObject(j).optJSONObject("child2");

这样,如果child2不存在,不必捕捉异常,而是可以检查null。

扫码关注云+社区

领取腾讯云代金券