如何在Java中解析JSON结构化JSON数组对象

时间:2015-09-11 11:15:40

标签: java arrays json parsing

我试图解析这个JSON代码

{
  "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,message和result。

谢谢。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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"));
}

目前我刚刚播放了videoUrl,您可以同样获取视频的其他属性。

答案 2 :(得分:0)

用于数据使用:

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

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

然后解析视频JSONArray。