2015-09-11 156 views
0

我試圖解析此JSON代碼如何解析JSON結構化JSON數組對象在Java中

{ 
    "resultCode":"350", 
    "message":"OK", 
    "result":1, 
    "data": 
{ 
    "totalCount":"2", 
    "videos":[ 
     { 
     "videoId":"73bfedf534", 
     "VideoUrl":"www.videourlexample.com", 
     "title":"vbsample1", 
     "description":"" 
     }, 

{ 
     "videoId":"73bfedf534", 
     "VideoUrl":"www.videourlexample.com", 
     "title":"vbsample2", 
     "description":"" 
     } 
    ] 
    } 
} 

我能僅此解析。

"resultCode":"350", 
"message":"OK", 
"result":1, 

這是Java代碼

JSONObject jsonObject = (JSONObject) 
//return the JSON code above. 
jsonParser.parse(getHTML("...httpRequest...")); 

    // get a String from the JSON object 
    String resultCode = (String) jsonObject.get("resultCode"); 
    System.out.println("[RESULTCODE] The message is: " + resultCode); 


    // get a String from the JSON object 
    String message = (String) jsonObject.get("message"); 
    System.out.println("[MESSAGE] The message is: " + message); 

    // get a number from the JSON object 
    long result = (long) jsonObject.get("result"); 
    System.out.println("[RESULT] The resultCode is: " + result); 

我無法分析 「數據」。有人可以幫助我嗎? 我想從json數組中分別獲取每個值......比如resultCode,消息和結果。

謝謝。

+0

可能重複(http://stackoverflow.com/questions/20899839/retreiving-values-from-nested-json-object) – PKuhn

回答

1
JSONObject mainObj= new JSONObject(yourJSON); 
String resultCode= mainObj.get("resultCode"); 
String message= mainObj.get("message"); 
String result= mainObj.get("result"); 
JSONObject dataObj = mainObj.get("data"); 
JSONArray jsonArray = (JSONArray) dataObj.get("videos"); 
for (int i = 0; i <jsonArray.length(); i++) { 
    JSONObject obj= jsonArray.get(i); 
    String videoId=obj.get("videoId"); 
    String videoUrl=obj.get("VideoUrl"); 
    String title=obj.get("title"); 
    String description=obj.get("description"); 
    System.out.println("videoId="+videoId +"videoUrl="+videoUrl+"title=title"+"description="+description);   
} 
System.out.println("resultCode"+resultCode+"message"+message+"result"+result); 
+0

我必須糾正你的代碼.. 。添加一些cast和jsonArray.size()。現在它起作用了。 謝謝你的隊友 –

0

您可以嘗試使用此: -

JSONObject dataObj = (JSONObject)dataObj .get("data"); 
JSONArray jsonArray = (JSONArray) dataObj.get("videos"); 
for (int i = 0; i <jsonArray.length(); i++) { 
    System.out.println(((JSONObject)jsonArray.get(i)).get("videoUrl")); 
} 

目前我剛纔printes videoUrl,你同樣可以得到影片的其他屬性。

0

數據使用:

int totalCount = (int) ((Map) jsonObject.get("data")).get("totalCount"); 

JSONArray videos = (JSONArray) jsonObject.get("data")).get("videos"); 

,然後解析視頻JSONArray。 [從嵌套JSON對象Retreiving值]的