2017-06-20 37 views
1

JSONObjectから子属性を出力する必要があるコードに問題があります。実際には、いくつかの目的のためにJSONArrayに属性値を入れたいと思っています。JSONObject Javaから子属性を取得する方法

<、-SOこれまで私がやった - >

String preStringSingle = responseSingle.body().string(); // has the JSONObject 
JSONObject resultsJObject = new JSONObject(preStringSingle); 
JSONArray resultsJArray1 = resultsJObject.optJSONArray("data"); 
System.out.println(resultsJArray1); 

< --JSONObject - >

"status": true, 
"locale": "en-US", 
"error_code": null, 
"message": "OK", 
"data": [ 
    { 
     "service_list_access_mode": 0, 
     "service_list_domain": "http://www.hotsalesmarket.com", 
     "service_list_auth_method": 0, 
     "service_list_auth_user": null, 
     "service_list_auth_password": null, 
     "http_method": "GET", 
     "map_service_lists": [ 
      { 
       "path": "sdfm.assets/assets/cameras/5799.jpg", 
       "service_item_id": 5799 
      }, 
      { 
       "path": "dsf.assets/assets/cameras/5798.jpg", 
       "service_item_id": 5798 
      }, 
      { 
       "path": "sdfsdf.assets/assets/cameras/6701.jpg", 
       "service_item_id": 6701 
      } 
     ] 
    } 
], 
"timestamp": "2017-06-20T03:46:38Z" 
} 

は私が子供の属性にすべての詳細を取得したいです"map_service_lists"。

< --Desired出力 - >

{ 
    "path": "sdfsdf.assets/assets/cameras/5799.jpg", 
       "service_item_id": 5799 
}, 
{ 
    "path": "/sdfsdfs.assets/assets/cameras/5798.jpg", 
       "service_item_id": 5798 
}, 
{ 
    "path": "/sdfsdf.assets/assets/cameras/6701.jpg", 
       "service_item_id": 6701 
} 
+0

アレイ全体を取得することは可能ですか? –

+0

JSONArray mapServiceList = resultsJArray1.getJsonObject(0).getJSONArray( "map_service_lists"); '私はここのJavadocsから推測しているので、どうすればそれがわかるか教えてください。 –

+0

動作しません。 'getJSONObject(0)'の後に 'int'パラメータがあり、' string'パラメータが関数を渡すことはありません。 –

答えて

0

あなたはちょうどあなたがやったように継続する必要がありますが、階層下の追加レベル:

JSONArray data  = resultsJObject.optJSONArray("data"); 
JSONObject firstData = data.optJSONObject(0); 
JSONArray services = firstData.optJSONArray("map_service_lists"); 

System.out.println(services); 

(から配列のブラケットを取り外しますあなたがそれらを望んでいない場合の結果)。

0
String preStringSingle = responseSingle.body().string(); 
JSONObject resultsJObject = new JSONObject(preStringSingle); 
JSONArray resultsJArray1 = resultsJObject.optJSONArray("data"); 
JSONObject j = new JSONObject(resultsJArray1.get(0).toString()); 
JSONArray resultsJArray2 = j.optJSONArray("map_service_lists"); 
System.out.println(resultsJArray2); 
関連する問題