JSONObject对象,是{key:value}键值对格式。
例如:{"userid":"1001","success":true,''result'':[{"name":"张三"},{"age":"20"}]}
;类似于Map<String,Object>对象,其实json就是一种特殊形式的map。
JSONArray对象,是JSON数组格式,存放的是一个或者多个JSONObject对象;
即json数组是使用中括号[ ],只不过数组里面的项也是json键值对格式的。
例如:
[
{"userid":"1001","success":true,''result'':[{"name":"张三"},{"age":"20"}]},
{"userid":"1001","success":true,''result'':[{"name":"张三"},{"age":"20"}]},
{"userid":"1001","success":true,''result'':[{"name":"张三"},{"age":"20"}]}
]
由JSON数组的格式可发现,类似于List<Map<String,Object>>对象,可以说jsonArray对象就是特殊的listMap对象。
综上所述,可理解为:
- JSONObject Json = new JSONObject();
- JSONArray JsonArray = new JSONArray();
- Json.put("key", "value");//JSONObject对象中添加键值对
- JsonArray.add(Json); //将JSONObject对象添加到Json数组中
假设有如下json字符串:
String jsonStr = "[{'content':'查询成功','result':[{'ZS_20':2,'ZS_40':0},{'ZS_20':10,'ZS_40':0}],'success':true},
{'content':'查询失败','result':[],'success':false}]";
该字符串可转化为JSONArray对象,再转化为ListMap对象,当然也可以由JSONArray对象得到JSONObject对象,根据不同个人爱好自行选择。
方法一,先转为JSONArray对象再得到想要的JSONObject对象
JSONArray jsonArray = JSONArray.fromObject(jsonStr );
//获取第一个jsonObject对象,即
//{'content':'查询成功','result':[{'ZS_20':2,'ZS_40':0},{'ZS_20':10,'ZS_40':0}],'success':true}
JSONObject object = jsonArray.getJSONObject(0);
//由jsonObject对象直接取值
String content = object.get("content").toString();
System.out.println(content);
List<Map<String, Object>> list = (List<Map<String, Object>>) object.get("result");
for (Map<String, Object> map : list) {
System.out.println(map);
}
/*打印结果:
查询成功
{"ZS_20":2,"ZS_40":0}
{"ZS_20":10,"ZS_40":0}
*/
方法二:
JSONArray jsonArray = JSONArray.fromObject(jsonStr);
List<Map<String, Object>> list = (List)jsonArray;
Map<String, Object> map = list.get(1);
String content = map.get("content").toString();
System.out.println(content);
List<Map<String, Object>> list2 = (List<Map<String, Object>>) map.get("result");
System.out.println(list2);
for (Map<String, Object> map2 : list2) {
System.out.println(map2);
}
/*打印结果:
查询失败
[]
此场景只针对本人在开发中遇到问题,本人在此做个总结。
至于还有其它用法,在这里并不一一介绍,请查阅其它资料。