如何在JAVA中生成所需格式的json字符串?

时间:2013-05-31 09:40:47

标签: java json

我需要以下列格式生成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}"]

需要哪些更改才能获得所需格式的字符串?

2 个答案:

答案 0 :(得分: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)的更好的替代方案,它可以为您完成。

答案 1 :(得分:0)

使用Jettison,它将完全按照您的需要进行操作

import 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());
}

}

输出: [{ “参数1”: “VALUE1”, “参数2”: “VALUE2”},{ “参数1”: “值3”, “参数2”: “VALUE4”}]