以下代码生成一个嵌套数组,作为包含三个项的键的结果:
import org.codehaus.jettison.json.JSONObject;
// ...
JSONObject ret = new JSONObject();
for (Key key:keys) ret.append("blocked",key.id());
结果是:
{"blocked": [[["1"],"2"],"3"]}
这是预期的吗?如果是,我如何构建一个逐项添加的简单数组?
答案 0 :(得分:7)
您需要创建一个JSONArray
对象:
JSONObject ret = new JSONObject();
JSONArray arr = new JSONArray();
arr.put("1");
arr.put("2");
arr.put("3");
ret.put("blocked", arr);
结果是:
{"blocked":["1","2","3"]}
答案 1 :(得分:1)
这很奇怪,因为API says the following:
在键下将值附加到数组。如果密钥不存在
JSONObject
,然后将密钥放入JSONObject
,其值为aJSONArray
包含value参数。如果钥匙已经存在 与JSONArray
相关联,然后将value参数附加到它。
但它无法正常工作。当我这样做时:
JSONObject o = new JSONObject();
o.append("arr", "123");
o.append("arr", "456");
我得到一个例外,说“JSONObject[arr] is not a JSONArray
”。看起来有一个错误。
答案 2 :(得分:-1)
我遇到了类似的问题。你应该使用 put 方法;不是追加方法。当然,您应该创建一个JSONArrray并将其用作 put 方法的第二个参数。