我需要以下列格式生成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}"]
需要哪些更改才能获得所需格式的字符串?
答案 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”}]