我正在尝试使用org.json库在java中创建一个json字符串,以下是代码片段。
JSONArray jSONArray = new JSONArray();
JSONObject jSONObject = new JSONObject();
jSONObject.accumulate("test", jSONArray);
System.out.println(jSONObject.toString());
我希望它能打印
{"test":[]}
打印时
{"test":[[]]}
答案 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()
,以获得所需的结果。