どのように私はこの例のように見ていorg.jsonとJavaでJSONを作ることができますか?

codemanian_helloworld:

だから、私はこのようになりますのJavaで何かをしようとしたが、出力は素敵に見えていません。

コード例の一つは、私がJSONファイルを作ってみました:

        String name = "usericals.json";
        JSONObject jsonObj = new JSONObject();

        JSONArray scene = new JSONArray();
        JSONArray element = new JSONArray();


        jsonObj.put("scene", scene);
        for (int i = 0; i < 1; i++) {
            for (int ii = 0; ii < 1; ii++) {
                element.put(write);
            }
            jsonObj.put("element", element);

        }
        scene.put(element);

        try (PrintWriter writer = new PrintWriter("new.json", "UTF-8")) {
            writer.write(jsonObj.toString(4));
        } catch (Exception ex) {
            System.out.println("exception " + ex);
        }

私はこのように見えますが、私は右のそれを得ることができないJSONファイルを作りたかったです。私は唯一の配列上記の私のコードで作成しています。誰もがアイデアや提案を持っていますか?

私が欲しいJSONファイル:

{
  "scene": [
    {
      "id": 0,
      "calendar_event": "urlaub",
      "element": [
        {
          "anything": ""
        },
        {
          "anything": ""
        }
      ]
    },
    {
      "id": 1,
      "calendar_event": "urlauburlaub",
      "element": [
        {
          "anything": ""
        },
        {
          "anything": ""
        }
      ]
    },
    {
      "id": 2,
      "calendar_event": "urlauburlauburlaub",
      "element": [
        {
          "anything": ""
        },
        {
          "device": "",
          "anything": ""
        }
      ]
    },
    {
      "id": 3,
      "calendar_event": "urlauburlauburlauburlaub",
      "element": [
        {
          "anything": ""
        },
        {
          "anything": ""
        }
      ]
    }
  ]
}
user1039663:

再帰的に使用JSONObject。(それが簡単にreadedすることができますので、私はいくつかの余分なインデントを追加しますが、実際のプロジェクトで活用機能の代わりに)このような何かを試してみてください:

JSONObject json = new JSONObject();
  JSONArray scene = new JSONArray();
    JSONObject node = new JSONObject();
    node.put("id", 0);
    node.put("calendar_event", "urlaub");
      JSONArray element = new JSONArray();
        JSONObject enode = new JSONObject();
        enode.put("anything", "");
      element.add(enode);
      //...
    node.put("element", element);
  scene.add(node);
json.put("scene", scene);
//...

このような注意は手動でJSONsを生成しますが、スキャンオブジェクトはjsonsを生成することを他のライブラリがあります。必要に応じて、それはeaserことができますが、メモリ内に保持する必要があるため、同じ木の2つのコピーを行っているので、あなたがオーバーヘッドすべてに行っているので、その意思を覚えることができます。また、多分階層構造プレーンJavaオブジェクトを使用して問題に対処します。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=8335&siteId=1