2017-06-20 94 views
1

我的代碼中存在一個問題,我需要從JSONObject打印一個子屬性。實際上,由於某些目的,我希望在JSONArray中擁有屬性值。如何從JSONObject獲取子屬性Java

< - 再見遠我做 - >

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);