2012-05-15 28 views
15

我JSON文件,如下它必须被倾倒入一个ArrayList:检查特定JSON对象是否可用

{ 
"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 
+1

请粘贴你的代码和错误,如果你有任何 – UVM

+0

你可以请粘贴的Java代码,你如何转换JSON到JSON对象? – pavi

+0

添加代码!!请检查并让我知道。 – curlyreggie

回答

37

无论如何,我得到了一些谷歌搜索解决方案: 我重新框它,

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

感谢大家的帮助!

+1

我想检查任何json对象的perticular值是否存在? 像这里{“ValidateUserResult”:[{“Sys_User_ID”:69,“my_id”:23}]} 我想检查响应“my_id”字符串是否可用? 任何人都有想法吗? – CoDe

+0

按照我提供的解决方案展开同样的事情。应该够好了。 – curlyreggie

+0

我有以下的JSON文件:http://pagesbyz.com/test.json和我遇到了同样的问题。这是我的问题:http://stackoverflow.com/questions/19868439/how-to-put-json-information-in-an-array-to-use-it-for-displaying-in-listview(如果有一个空白条目,JSON文件不再被解析:/)我真的很感谢你的帮助。 – Si8

-2

试试这个:

{"main1" : [{ 
      "id":"1" 
       "child1" : "valueA", 
       "child2" : "valueB", 
       "child3" : "valueC", 
      }, { 
       "id":"2" 
        "child1" : "value1", 
       "child3" : "value3", 
      }] 
} 
10
getJSONObject("child2"); 

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

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

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

+0

美丽!这工作。谢谢!! – curlyreggie

+0

但我有问题。如果对象存在,如何获得值'valueB'?我尝试使用相同的代码。无法得到它。 – curlyreggie

+0

现在我重新编写它, 'JSONObject getchild2 = jArray.getJSONObject(j).optJSONObject(“child2”);如果(getchild2 == null){ map.put(“rating”,“N.A”); (“rating”,jArray.getJSONObject(j).getString(“child2”));其他{ } else { map.put }' 事实是,结果应该返回一个值,但不会返回。结果总是指向“N.A”。我究竟做错了什么? – curlyreggie

相关问题