2012-05-15 29 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

相關問題