我们在日常开发中少不了和JSON数据打交道,下面总结了用到的框架来解析JSON数据
json-lib具有通用性,但是比较麻烦,且时间有些久远,jar包只更新到2010年
net.sf.json-lib
json-lib
2.4
jdk15 //jar包区分jdk1.3和jdk1.5版本
1.2.1 JSONObject与String相互转换
JSONObject jsonobject= JSONObject.fromObject(str);
String str = JSONObject.toString
1.2.2 获取JSONObject数据及遍历JSONArray
String str = JSONObject.getInt("keys")
String str = JSONObject.getString("keys")
JSONArray = JSONObject.getJSONArray(String);
遍历:
for(i iterator = JSONObject.keys();
while(iterator.hasNext()){
String keys = iterator.next();
}
1.2.2 JSONObject转对象
Grade grade = (Grade)JSONObject.toBean(jsonObject,Grade.class);
与json-lib相类似,主要有三点区别
org.json
json
20170516
JSONObject = new JSONObject(str);
net.sf.json.JSONObject: 没有严格要求获取字段的类型跟getXXX()的类型一样
org.json.JSONObject:获取的字段类型必须跟getXXX()的类型一样
springMVC内置解析器就是jackson
com.fasterxml.jackson.core
jackson-databind
2.9.0
ObjectMapper mapper=new ObjectMapper();
Grade grade=mapper.readValue(json1, Grade.class);
mapper.writeValueAsString(grade);
JsonNode jsonNode = mapper.readTree(jsonStr);
Iterator keys = jsonNode.fieldNames();
while(keys.hasNext()){
String fieldName = keys.next();
System.out.println(fieldName + " : " + jsonNode.path(fieldName).toString());
}
阿里巴巴开源框架,效率最高
com.alibaba
fastjson
1.2.37
Student stu = JSON.parseObject(json,Student.class);
List list=JSON.parseArray(json2, String.class);
JSON.toJSONString(stu);
//or String json = JSON.toJSON(stu).toString();
谷歌产品
com.google.code.gson
gson
2.8.1
Gson gson = new Gson();
Grade grade = gson.fromJson(json1,Grade.class);
ArrayList list=gson.fromJson(json2,new TypeToken>(){}.getType());
String json=gson.toJson(grade);