使用simpleJSon创建数组数组的Java代码

时间:2017-02-28 06:21:53

标签: java json simplejson

我有以下JSON结构:

{
    "PARAMORDER": [{
        "TAB1": [{
            "1": "Picture ID Source"
        }, {
            "2": "Place of Issuance"

        }],
        "TAB2": [{
            "1": "Picture ID Source"
        }, {
            "2": "Place of Issuance"

        }]
    }]
}

我正在尝试使用java代码创建一个JSON数组,它在解析和检索时看起来像上面的格式。我正在使用org.json.simple API。但是我无法使用java代码在JSON中创建数组数组。有人可以请我分享一个示例代码,它可以构造上述格式的JSON。

下面是我尝试的示例代码,它创建了一个json数组:

JSONArray jsonArray = new JSONArray();
JSONObject firstJson = new JSONObject();
JSONObject secondJson = new JSONObject();

firstJson.put("1", "Picture ID Source");
secondJson.put("1", "Picture ID Source");

jsonArray.add(firstJson);
jsonArray.add(secondJson);

System.out.println(jsonArray.toString);

这给了我以下JSON:

[{
    "1": "Picture ID Source"
}, {
    "1": "Picturesecond ID Source"
}]

我无法创建JSONArray的JSONArray。有人可以帮我吗? 在此先感谢。

1 个答案:

答案 0 :(得分:1)

您已经走上正轨,但是您需要更多代码来创建中间级别,结构可以无限期地以树状方式添加。您的示例中的顶级也是JSON对象,而不是数组。

JSONObject root = new JSONObject();
JSONArray paraArray = new JSONArray();
JSONObject a = new JSONObject();
JSONArray tab1 = new JSONArray();
JSONObject source1 = new JSONObject();
source1.put("1", "Picture ID Source");
tab1.add(source1);
JSONObject source2 = new JSONObject();
source2.put("2", "Place of Issuance");
tab1.add(source2);
a.put("TAB1", tab1);
paraArray.add(a);

JSONObject b = new JSONObject();
JSONArray tab2 = new JSONArray();
JSONObject source3 = new JSONObject();
source3.put("1", "Picture ID Source");
tab2.add(source3);
JSONObject source4 = new JSONObject();
source4.put("2", "Place of Issuance");
tab2.add(source4);
b.put("TAB2", tab2);
paraArray.add(b);

root.put("PARAMORDER", paraArray);

System.out.println(root.toString());

输出

{"PARAMORDER":[{"TAB1":[{"1":"Picture ID Source"},{"2":"Place of Issuance"}]},{"TAB2":[{"1":"Picture ID Source"},{"2":"Place of Issuance"}]}]}