2016-04-04 59 views
1

如何從Web獲取此Json密鑰和值。這是我的代碼,但我無法從第二次迭代中獲得。有人可以幫助我做到這一點。如何在andorid中使用迭代器獲取Json密鑰和值

JSON響應:

"attributes": [ 
    { 
    "main_id": "3", 
    "Color": [ 
     { 
     "id": "60", 
     "text": "46(+$0.00)" 
     } 
    ] 
    }, 
    { 
    "main_id": "21", 
    "dede": [ 
     { 
     "id": "73", 
     "text": "baba(+$0.00)" 
     } 
    ] 
    } 
] 

這是我的Android代碼來解析值:

JSONArray jsonArrayAttributes = jsonObj.getJSONArray("attributes"); 
    for (int i = 0; i < jsonArrayAttributes.length(); i++) { 

     JSONObject jsonObject1 = jsonArrayAttributes.getJSONObject(i); 
     Iterator iteratorKey = jsonObject1.keys(); 
     String strAttrId = (String) iteratorKey.next(); 
     String strAttrName = (String) iteratorKey.next(); 

     JSONArray jsonArrayName = jsonObject1.getJSONArray(strAttrName); 

     for (int j = 0; j < jsonArrayName.length(); j++) { 
      JSONObject jsonObjName = jsonArrayName.getJSONObject(j); 
     } 
    } 
+0

我無法實現使用此JSON響應。我相應地改變了迴應。 – syedjibharat

回答

1

你必須改變你的代碼有點像

JSONArray jsonArrayAttributes = jsonObj.getJSONArray("attributes"); 

     for (int i = 0; i < jsonArrayAttributes.length(); i++) { 

      JSONObject jsonObject1 = jsonArrayAttributes.getJSONObject(i); 
      Iterator it = jsonObject1.keys(); 

      boolean arrFlag = false; 
      while (it.hasNext()) { 
       String key = (String) it.next(); 
       if (!arrFlag) { 
        String value = jsonObject1.getString(key); 
        Log.i("Key:Value", "" + key + ":" + value); 
        arrFlag = true; 
       } else { 
        JSONArray value = jsonObject1.getJSONArray(key); 
        Log.i("Key:Value", "" + key + ":" + value); 
        arrFlag = false; 
       } 
      } 
     } 

它完美地工作。

你會在這裏獲得所有的鑰匙和價值。

+0

它不適合我。通過使用迭代器鍵,它將在第二次迭代中選擇隨機鍵。我在類型java.lang.String的main_id中得到了這個異常值21,無法轉換爲JSONArray – syedjibharat