如果要处理json数据首先要确定使用的json包是那个,常用的有json-lib-x.jar和jack-json-x.jar。我这里的实例代码为json-lib-2.4-jdk15.jar。
在json-lib-2.4-jdk15.jar里的json数据,被定义为了两种形式:JSONObject对象的形式,值的存取方式为<Key,value>的方式,与map是相似的。JSONArray对象形式,值的存取方式为序列,与list相似,根据下标去取值。
只要理解了JSONArray和JSONObject在处理json数据就没有问题了。无非是json数据复杂了,来回转换JSONArray和JSONObject两钟格式取值。这个比较麻烦。
实例:
// 声明一个List<map<String,String>>对象
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
/* 循环添加map数据 */
for (int i = 0; i < 10; i++) {
Map<String, String> map = new HashMap<String, String>();
map.put("Key", "name" + i);
map.put("age", "" + i);
list.add(map);
}
// 将list对象转换为json
JSONArray json = JSONArray.fromObject(list);
// 定义模拟的json数据
String strs = "{\"hospitall\":[{\"name\":\"第一医院\",\"phone\":\"112212\"},{\"name\":\"第二医院\",\"phone\":\"112212\"}]}";
System.out.println(json);
// 将字符串,转换为jsonObject对象
JSONObject jsono = JSONObject.fromObject(strs);
// 获得json里的hospitall的值也就是一个json集合
JSONArray jsonh = jsono.getJSONArray("hospitall");
for (int i = 0; i < jsonh.size(); i++) {
// 通过json集合获取没有一个jsonObject对象,这时候jsonObject就跟map相识了,
// 同意是根据键值对处理数据
JSONObject jsonn = jsonh.getJSONObject(i);
System.out.println(jsonn.get("name"));
System.out.println(jsonn.get("phone"));
}
输出结果如下: