2

次のコードは、3つのアイテムを含むキーの結果としてネストされた配列を生成します。

import org.codehaus.jettison.json.JSONObject;
// ...

JSONObject ret = new JSONObject();
for (Key key:keys) ret.append("blocked",key.id());

結果は次のとおりです。

{"blocked": [[["1"],"2"],"3"]}

これは期待されていますか?もしそうなら、どうすればアイテムごとに追加するプレーン配列を構築できますか?

4

3 に答える 3

9

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"]}
于 2012-07-02T16:20:46.643 に答える
2

APIが次のように言っているので不思議です:

キーの下の配列に値を追加します。キーがに存在しない場合、 JSONObjectキーはに入れられ、JSONObjectその値に JSONArrayは値パラメータが含まれます。キーがすでにに関連付けられているJSONArray場合は、valueパラメーターが追加されます。

しかし、それは正しく機能しません。私がする時:

JSONObject o = new JSONObject();
o.append("arr", "123");
o.append("arr", "456");

「」という例外が発生しますJSONObject[arr] is not a JSONArray。バグがあるようです。

于 2013-05-15T07:50:59.097 に答える
0

私は同様の問題に遭遇しました。putメソッドを使用する必要があります。appendメソッドではありません。そしてもちろん、JSONArrrayを作成し、それをputメソッドの2番目の引数として使用する必要があります。

于 2018-03-19T14:57:25.680 に答える