2013-04-29 72 views
5

我想在java中使用org.json库创建json字符串,以下是代码片段。使用org.json在java中创建JSON

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

我希望它打印

{"test":[]} 

而它打印

{"test":[[]]} 

回答

9

而是采用accumulate使用put这种方式赢得的; t将其添加到预先存在的(或创建和添加)JSONArray,但将其添加为这样的JSONObject的键:

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

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

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); 
} 

这是按照这清楚地说(为accumulate法)的API -

在一个键下累加值。它与put方法类似,除了 ,如果已经有一个对象存储在密钥下,那么将在密钥下存储一个 JSONArray以保存所有累计的 值。如果已经有一个JSONArray,则新值为 。相比之下,put方法取代了之前的 值。如果只有一个值不是JSONArray,那么 的结果将与使用put相同。但是,如果累积了多个值 ,那么结果将如追加。

您可以使用put()如其他答案中所述,以获得您想要的结果。