当前位置: 首页 > 面试题库 >

如何使用Json.simple解析Java中的JSONArray?

益泰平
2023-03-14
问题内容

我正在尝试读取这样的JSON文件:

{
  "presentationName" : "Here some text",
  "presentationAutor" : "Here some text",
  "presentationSlides" : [
    {
      "title" : "Here some text.",
      "paragraphs" : [
        {
          "value" : "Here some text."
        },
        {
          "value" : "Here some text."
        }
      ]
    },
    {
      "title" : "Here some text.",
      "paragraphs" : [
        {
          "value" : "Here some text.",
          "image" : "Here some text."
        },
        {
          "value" : "Here some text."
        },
        {
          "value" : "Here some text."
        }
      ]
    }
  ]
}

这是一项学校运动。我选择尝试使用JSON.simple(来自GoogleCode),但是我对另一个JSON库开放。我听说过杰克逊和格森:它们比JSON.simple好吗?

这是我当前的Java代码:

Object obj = parser.parse(new FileReader( "file.json" ));

JSONObject jsonObject = (JSONObject) obj;

// First I take the global data
String name = (String) jsonObject.get("presentationName");
String autor = (String) jsonObject.get("presentationAutor");
System.out.println("Name: "+name);
System.out.println("Autor: "+autor);

// Now we try to take the data from "presentationSlides" array
JSONArray slideContent = (JSONArray) jsonObject.get("presentationSlides");
Iterator i = slideContent.iterator();

while (i.hasNext()) {
    System.out.println(i.next());
    // Here I try to take the title element from my slide but it doesn't work!
    String title = (String) jsonObject.get("title");
    System.out.println(title);
}

我检查了很多示例(有些在Stack上!),但是我从未找到解决问题的方法。

也许我们无法使用JSON.simple做到这一点?您有什么推荐的吗?


问题答案:

您永远不会为分配新值jsonObject,因此在循环内部它仍然引用完整的数据对象。我认为您想要类似的东西:

JSONObject slide = i.next();
String title = (String)slide.get("title");


 类似资料:
  • 问题内容: 我有以下XML,没有XSD或架构,我想使用JAXB解析为java对象,因为我听说它比SAX更好。有没有一种方法可以通过注释或更好的方法来完成此任务?它是否使我只需要一个FosterHome类?我很难找到如何执行此操作的任何帮助,不胜感激。 我本来是想开设FosterHome,Family和Child班的。使用JAXB,不再需要3个类吗?我不确定如何处理此问题,因为ChildID在两个不

  • 问题内容: 它很好用,但是我希望它返回一个包含所有字符串的数组,而不是最后一个元素返回一个字符串。 任何想法如何做到这一点? 问题答案: 因此,你想构建一个XML解析器来解析这样的RSS feed。 现在,你可以使用两个SAX实现。你可以使用org.xml.sax或android.sax实现。在发布简短的示例后,我将解释两者的优点和缺点。 android.sax Implementation 让我

  • 问题内容: 它很好用,但是我希望它返回一个包含所有字符串的数组,而不是最后一个元素返回一个字符串。 任何想法如何做到这一点? 问题答案: 因此,你想构建一个XML解析器来解析这样的RSS feed。 现在,你可以使用两个SAX实现。你可以使用org.xml.sax或android.sax实现。在发布简短的示例后,我将解释两者的优点和缺点。 android.sax实现 让我们从实现开始。 你首先必须

  • 问题内容: 在实现代理服务器时,我将HTTP请求作为字符串发送,如下所示: GET http:// localhost:54321 / x HTTP / 1.1 主机:localhost:54321 缓存控制:无缓存 是否有内置的类来解析此请求? 问题答案: 我对这种解析的内置支持一无所知。如果您确实需要这样的解析器,则可以签出以下库: http //hc.apache.org/index.htm

  • JSON.simple是一个简单的Java类库,用于解析和生成JSON文本。不依赖于其它类库,性能高。 示例代码:   System.out.println("=======decode=======");                   String s="[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";   Object obj=JSO

  • 问题内容: 解析EDIFACT可能是一项艰巨的任务。如何从EDIFACT文件正确创建语法和语义正确的树? 问题答案: www.smooks.org-基于模板的文本解析器。他们有合适的EDI示例,在他们倾销我的产品之前,我一直希望这些示例可用于Walmart 810s。