15

次のような 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 ライブラリを使用できます。Jackson と Gson について聞きました: 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 ではこれができないのではないでしょうか? おすすめは何ですか?

4

3 に答える 3

18

それは働いている!さすがラッセル。演習を終了し、GSON を試して違いを確認します。

ここに新しいコード:

        JSONArray slideContent = (JSONArray) jsonObject.get("presentationSlides");
        Iterator i = slideContent.iterator();

        while (i.hasNext()) {
            JSONObject slide = (JSONObject) i.next();
            String title = (String)slide.get("title");
            System.out.println(title);
        }
于 2013-09-17T12:18:07.347 に答える