2016-04-04 6 views
1

このJsonキーと値をWebから取得する方法。これは私のコードですが、私は2回目の繰り返しからこれを得ることはできません。私がこれをするのを助けることができるの?andoridのイテレータでJsonのキーと値を取得する方法

JSON応答:

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

これは、値を解析するために私のアンドロイドコードです:

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

それは私のために働いていません。イテレーターキーを使うと、2回目の反復でランダムキーが選択されます。私はこの例外がありますjava.lang.String型のmain_idの値21はJSONArrayに変換できません – syedjibharat

関連する問題