【问题标题】:Check if a particular JSON Object is available or not检查特定的 JSON 对象是否可用
【发布时间】:2012-05-22 13:52:47
【问题描述】:

我有如下 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);
}

我怎样才能做到这一点?

&lt;my_json_object&gt; 使用本机 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

【问题讨论】:

  • 如果有任何错误,请粘贴您的代码和错误
  • 你能粘贴java代码吗,你是如何将json转换为json对象的?
  • 代码已添加!!请检查并告诉我。
  • 错误显示在哪里?在哪一行?
  • 当要检查 JSON 对象“child2”时会发生这种情况。

标签: java android json object


【解决方案1】:

无论如何,我通过谷歌搜索得到了解决方案: 我将其重新定义为,

 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");相当,不必要。

这很有效,相当完美!更多详情请参考:Checking if exists subObject in JSON

感谢大家的帮助!

【讨论】:

  • 我想检查是否存在任何 json 对象特定值?像这里 {"ValidateUserResult":[{"Sys_User_ID":69,"my_id":23}]} 我想检查响应“my_id”字符串是否可用?有人知道吗?
  • 扩展与我给出解决方案相同的内容。应该没问题。
  • 我有以下 JSON 文件:pagesbyz.com/test.json 我遇到了同样的问题。这是我的问题:stackoverflow.com/questions/19868439/…(如果有空白条目,则不再解析 JSON 文件:/)非常感谢您的帮助。
【解决方案2】:
getJSONObject("child2");

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

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

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

【讨论】:

  • 但是我有问题。如果对象存在,如何获取值valueB?我尝试使用相同的代码。没能拿到。
  • 现在我重新构造它,` JSONObject getchild2 = jArray.getJSONObject(j).optJSONObject("child2"); if (getchild2 == null) { map.put("rating", "N.A"); } else { map.put("rating", jArray.getJSONObject(j).getString("child2")); }` 事实是,结果应该返回一个值,但没有返回。结果总是指向“N.A”。我做错了什么?
【解决方案3】:

试试这个:

{"main1" : [{
             "id":"1"
               "child1" : "valueA",
               "child2" : "valueB",
               "child3" : "valueC",
            }, {
                "id":"2"
                  "child1" : "value1",
                 "child3"  : "value3",
           }]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-17
    • 2021-07-13
    • 2021-09-20
    • 2017-06-23
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多