web-dev-qa-db-ja.com

JSONObjectを使用してJavaで次の構造のネストされたJSONオブジェクトを作成しますか?

JSONObjectとJSONArrayを使用して、Javaの構造に従うようなJSONオブジェクトを作成します。

スタックオーバーフローでさまざまな投稿を行ってきました。これは、JSONArrayで特定できないPush、Putなどのメソッドの使用を提案しています。助けてください。

{
    "name": "sample",
    "def": [
        {
            "setId": 1,
            "setDef": [
                {
                    "name": "ABC",
                    "type": "STRING"
                },
                {
                    "name": "XYZ",
                    "type": "STRING"
                }
            ]
        },
        {
            "setId": 2,
            "setDef": [
                {
                    "name": "abc",
                    "type": "STRING"
                },
                {
                    "name": "xyz",
                    "type": "STRING"
                }
            ]
        }
    ]
}
25
user3131769

インポートでorg.json.JSONArrayおよびorg.json.JSONObject

JSONObject object = new JSONObject();
object.put("name", "sample");
JSONArray array = new JSONArray();

JSONObject arrayElementOne = new JSONObject();
arrayElementOne.put("setId", 1);
JSONArray arrayElementOneArray = new JSONArray();

JSONObject arrayElementOneArrayElementOne = new JSONObject();
arrayElementOneArrayElementOne.put("name", "ABC");
arrayElementOneArrayElementOne.put("type", "STRING");

JSONObject arrayElementOneArrayElementTwo = new JSONObject();
arrayElementOneArrayElementTwo.put("name", "XYZ");
arrayElementOneArrayElementTwo.put("type", "STRING");

arrayElementOneArray.put(arrayElementOneArrayElementOne);
arrayElementOneArray.put(arrayElementOneArrayElementTwo);

arrayElementOne.put("setDef", arrayElementOneArray);
array.put(arrayElementOne);
object.put("def", array);

明確にするために、最初の配列の2番目の要素は含めませんでした。あなたがポイントを得たことを願っています。

編集:

前の答えは、org.json.JSONObjectおよびorg.json.JSONArray

ために net.sf.json.JSONObjectおよびnet.sf.json.JSONArray

JSONObject object = new JSONObject();
object.element("name", "sample");
JSONArray array = new JSONArray();

JSONObject arrayElementOne = new JSONObject();
arrayElementOne.element("setId", 1);
JSONArray arrayElementOneArray = new JSONArray();

JSONObject arrayElementOneArrayElementOne = new JSONObject();
arrayElementOneArrayElementOne.element("name", "ABC");
arrayElementOneArrayElementOne.element("type", "STRING");

JSONObject arrayElementOneArrayElementTwo = new JSONObject();
arrayElementOneArrayElementTwo.element("name", "XYZ");
arrayElementOneArrayElementTwo.element("type", "STRING");

arrayElementOneArray.add(arrayElementOneArrayElementOne);
arrayElementOneArray.add(arrayElementOneArrayElementTwo);

arrayElementOne.element("setDef", arrayElementOneArray);
object.element("def", array);

基本的には同じで、JSONObjectの「element」のメソッド「put」とJSONArrayの「add」の「put」を置き換えます。

54
goten

ここに1つの大まかな例があります。洗練できるはずです。 (これに興味があるかもしれませんJava "tutorial" http://docs.Oracle.com/javaee/7/tutorial/doc/jsonp.htm#GLRBB

(この例では、Java EEに含まれるJSON参照実装を使用しています(ここで入手可能: https://Java.net/projects/jsonp/downloads/directory/ri

package com.demo;
import Java.io.FileWriter;
import Java.io.IOException;
import javax.json.Json;
import javax.json.stream.JsonGenerator;

public class JSONExample {
public static void main(String[] args) {
    FileWriter writer = null;
    try {
        writer = new FileWriter("C:\\Users\\Joseph White\\Downloads\\jsontext.txt");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    JsonGenerator gen = Json.createGenerator(writer);

    gen.writeStartObject().write("name", "sample")
        .writeStartArray("def")
          .writeStartObject().write("setId", 1)
             .writeStartArray("setDef")
                .writeStartObject().write("name", "ABC").write("type", "STRING")
                .writeEnd()
                .writeStartObject().write("name", "XYZ").write("type", "STRING")
                .writeEnd()
            .writeEnd()
          .writeEnd()
            .writeStartObject().write("setId", 2)
              .writeStartArray("setDef")
                .writeStartObject().write("name", "abc").write("type", "STRING")
                .writeEnd()
                .writeStartObject().write("name", "xyz").write("type", "STRING")
                .writeEnd()
              .writeEnd()
            .writeEnd()
          .writeEnd()
        .writeEnd();

    gen.close();

}

 }
1
ErstwhileIII