使用org.json在java中创建JSON

时间:2013-04-29 05:30:50

标签: java json org.json

我正在尝试使用org.json库在java中创建一个json字符串,以下是代码片段。

JSONArray jSONArray = new JSONArray();
JSONObject jSONObject = new JSONObject();
jSONObject.accumulate("test", jSONArray);
System.out.println(jSONObject.toString());

我希望它能打印

{"test":[]} 

打印时

{"test":[[]]}

2 个答案:

答案 0 :(得分:9)

而不是使用accumulate以这种方式使用put它赢了;将它添加到预先存在的(或创建并添加)JSONArray中,但是将它作为JSONObject的键添加到这样:

JSONArray array = new JSONArray();
JSONObject obj = new JSONObject();
obj.put("test", array);
System.out.println(obj.toString());

现在它将打印{"test":[]}

答案 1 :(得分:2)

这是因为在accumulate方法中,

Object object = this.opt(key); //gets the key value. Null in your case.
if (object == null) {
    this.put(key,
        value instanceof JSONArray ? new JSONArray().put(value) : value);
}

这是根据API明确说明(对于accumulate方法) -

  

累积密钥下的值。它类似于put方法除外   如果已经有一个对象存储在密钥下,那么a   JSONArray存储在密钥下以保存所有累积的密钥   值。如果已经存在JSONArray,则新值为   附加到它。相反,put方法取代了之前的方法   值。如果只累积了一个不是JSONArray的值,那么   结果与使用put相同。但如果有多个值   累积,然后结果就像追加。

您可以使用其他答案中提到的put(),以获得所需的结果。