2015-09-11 124 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值]的