【问题标题】:How to parse JSON structured-JSON Array Object in Java如何在 Java 中解析 JSON 结构化 JSON 数组对象
【发布时间】:2015-09-11 11:15:39
【问题描述】:

我正在尝试解析这个 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。

谢谢。

【问题讨论】:

标签: java arrays json parsing


【解决方案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);

【讨论】:

  • 我已经更正了你的代码......添加了一些演员表和 jsonArray.size()。现在它可以工作了。谢谢老哥
  • 需要导入哪个依赖?有多种选择
  • 你需要导入 org.json.JSONObject 和 org.json.JSONArray @CristianG
【解决方案2】:

你可以试试这个:-

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,你可以类似地获取视频的其他属性。

【讨论】:

    【解决方案3】:

    数据使用:

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

    然后解析视频 JSONArray。

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 2011-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-01
      • 2019-01-14
      • 2022-01-20
      • 1970-01-01
      相关资源
      最近更新 更多