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;

公共类 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 回答