以下代码为包含三个项目的键生成一个嵌套数组:
import org.codehaus.jettison.json.JSONObject;
// ...
JSONObject ret = new JSONObject();
for (Key key:keys) ret.append("blocked",key.id());
结果是:
{"blocked": [[["1"],"2"],"3"]}
这是预期的吗?如果是,我如何构造一个逐项添加的普通数组?
您需要创建一个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"]}
这很奇怪,因为API 说明了以下内容:
将值附加到键下的数组中。如果 中不存在该
JSONObject
键,则将该键放入 中JSONObject
,其值为JSONArray
包含 value 参数的 a。如果键已与 a 关联JSONArray
,则将 value 参数附加到它。
但它不能正常工作。当我做:
JSONObject o = new JSONObject();
o.append("arr", "123");
o.append("arr", "456");
我得到一个异常说“ JSONObject[arr] is not a JSONArray
”。看起来有一个错误。
我遇到了类似的问题。你应该使用put方法;不是附加方法。当然,您应该创建一个 JSONArray 并将其用作put方法的第二个参数。