2017-06-20 813 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);