0

次の形式で JSON 文字列を生成する必要があります。

[{"param1":"value1","param2":"value2"},{"param1":"value3","param2":"value4"}]

次の方法でデータを保存しようとしました:

JSONArray jsonArray = JSONArray();

HashMap<String, String> hmap = new HashMap<String, String>();
hmap.put("param1", "value1");
hmap.put("param2", "value2");
jsonArray.add(hmap);

hmap = new HashMap<String, String>();
hmap.put("param1", "value3");
hmap.put("param2", "value4");
jsonArray.add(hmap);

System.out.print(jsonArray.toString());

しかし、次の形式で json 文字列を生成しました。

["{param1:value1,param2:value2}", "{param1:value3,param2:value4}"]

文字列を必要な形式で取得するには、どのような変更が必要ですか?

4

2 に答える 2

1

これはうまくいくはずです。マップの代わりに JSONObject を使用し、それらを JSONArray に追加します。

JSONArray jsonArray = new JSONArray();

JSONObject jsonObject1= new JSONObject();
JSONObject jsonObject2= new JSONObject();

jsonObject1.put("param1", "value1");
jsonObject1.put("param2", "value2");
jsonArray.add(jsonObject1);


jsonObject2.put("param1", "value3");
jsonObject2.put("param2", "value4");
jsonArray.add(jsonObject2);

System.out.print(jsonArray.toString());

XStream などのサードパーティのライブラリを使用するより良い代替手段をお勧めします。

于 2013-05-31T09:53:58.757 に答える
0

Jettisonを使用すると、まさにあなたが望むことを行います

org.codehaus.jettison.json.JSONArray をインポートします。

public class JSONPrintTest は TestCase を拡張します{

public void testPrinting(){
    JSONArray jsonArray = new JSONArray();

    HashMap<String, String> hmap = new HashMap<String, String>();
    hmap.put("param1", "value1");
    hmap.put("param2", "value2");
    jsonArray.put(hmap);

    hmap = new HashMap<String, String>();
    hmap.put("param1", "value3");
    hmap.put("param2", "value4");
    jsonArray.put(hmap);

    System.out.print(jsonArray.toString());
}

}

出力: [{"param1":"value1","param2":"value2"},{"param1":"value3","param2":"value4"}]

于 2013-05-31T10:04:05.117 に答える