2014-10-22 226 views
-4

多一個JSONObjects Java的web服務這是我的JSON字符串,JSON解析中的JSONObject

{ 
"listmain":{ 
    "16":[{"brandid":"186"},{"brandid":"146"},{"brandid":"15"}], 
    "17":[{"brandid":"1"}], 
    "18":[{"brandid":"12"},{"brandid":"186"}], 

      } 
} 

我需要在 「16」 獲得的值, 「17」, 「18」 的標籤,並添加值和IDS( 「16」,「17」,「18」)分配給兩個ArrayList。

我的意思是, 當我們把 「16」,下面的過程應該發生,

List<String> lsubid = new ArrayList<String>(); 
List<String> lbrandid = new ArrayList<String>(); 
for(int i=0;i<number of elements in "16";i++) { 
    lsubid.add("16"); 
    lbrandid.add("ith value in tag "16" "); 
} 

終於在lsubid值將是---> [16,16,16]

lbrandid中的值將是---> [186,146,15]

任何人都可以請幫我完成此操作。

+3

您可以使用此功能讓您的JSON鍵:http://www.json.org/javadoc/org/json/JSONObject。 html#keys() 我認爲它會幫助你:) – Maxouille 2014-10-22 11:33:01

+0

創建一個簡單的pojo類,使用gson將json解析爲一個對象。 – NightSkyCode 2014-10-22 12:18:39

回答

1

使用JSONObject keys()獲取密鑰,然後迭代每個密鑰以獲得動態值。

可以解析JSON這樣

JSONObject responseDataObj = new JSONObject(responseData); 
JSONObject listMainObj = responseDataObj.getJSONObject("listmain"); 
Iterator keys = listMainObj.keys(); 
while(keys.hasNext()) { 
    // loop to get the dynamic key 
    String currentDynamicKey = (String)keys.next(); 
    //store key in an arraylist which is 16,17,... 
    // get the value of the dynamic key 
    JSONArray currentDynamicValue = listMainObj.getJSONArray(currentDynamicKey); 
    int jsonrraySize = currentDynamicValue.length(); 
    if(jsonrraySize > 0) { 
     for (int i = 0; i < jsonrraySize; i++) { 
      JSONObject brandidObj = currentDynamicValue.getJSONObject(i); 
      String brandid = brandidObj.getString("brandid"); 
      System.out.print("Brandid = " + brandid); 
      //store brandid in an arraylist 
     }     
    } 
} 

Source of this answer

+0

謝謝先生,但我試過,但有異常 org.json.JSONException:JSONObject [「brandid」]找不到。 – user3841250 2014-10-22 12:22:59

+0

@ user3841250:可以在你的問題中發佈'logcat' – kId 2014-10-22 12:35:11

+0

在這一行中有錯誤, String brandid = brandidObj.getString(「brandid」); org.json.JSONException:JSONObject [「brandid」]找不到。 \t at org.json.JSONObject.get(JSONObject.java:473) \t at org.json.JSONObject.getString(JSONObject.java:654) – user3841250 2014-10-22 12:40:23