JSON - 使用Java中的JSONArray解析文档

时间:2013-11-25 21:48:57

标签: java json arrays simplejson

我正在解析这个文件: http://pastebin.com/M3Gsbf1t 你可以看到它有点大。本文档由Youtube Data API v3生成。 我想得到所有“标题”元素并显示它们。 我的代码:

Object obj = parser.parse(str); // str contains the JSON code
JSONObject jsonObject = (JSONObject) obj;               
JSONArray msg = (JSONArray) jsonObject.get("title");
Iterator iterator = msg.iterator();
while (iterator.hasNext()) {
  System.out.println(iterator.next());
}

但它返回“NullPointerException”。 如果我用“项目”替换“标题”它可以正常工作,但它返回了我很多我不需要的信息。 我正在使用JSON.simple库。

感谢您的帮助:)

3 个答案:

答案 0 :(得分:1)

此代码应该有效:

    JSONObject jsonObject = (JSONObject) obj;               
    JSONArray msg = (JSONArray) jsonObject.get("items");
    Iterator iterator = msg.iterator();
    while (iterator.hasNext()) {
      //System.out.println(iterator.next());
      JSONObject item = (JSONObject) iterator.next();
      JSONObject item_snippet = (JSONObject) item.get("snippet");
      System.out.println( item_snippet.get("title"));
    }

您的JSON字符串的根目录下有一个JSONObject。在其中,有一个名为items的JSONArray。从中你必须在while循环中拉出单个项目。

对于每个项目,嵌套了JSONObject snippet。最后,您会在其中找到您的title字符串。

答案 1 :(得分:0)

jquery解决方案,这应该会给你一个标题数组,除非我读错了对象。

  titles = [];
  obj = $.parseJSON(str);
  $.each(obj.items,function(i,v{
     titles.push(v.snippet.title);
  });

答案 2 :(得分:0)

应该是这样的:

Object obj = parser.parse(str); // str contains the JSON code
JSONObject jsonObject = (JSONObject) obj;               
JSONArray msg = (JSONArray) jsonObject.get("items");
Iterator iterator = msg.iterator();
while (iterator.hasNext()) {
  // cast next item to JSONObject
  JSONObject item = (JSONObject) iterator.next();
  // grab the title
  System.out.println(item.get("title"));
}