java中有几种实现json的相关包
1、net.sf.json.JSONObject http://json-lib.sourceforge.net/apidocs/jdk15/net/sf/json/JSONObject.html
较早版本,jdk5中自带的,不推荐
2、org.json.JSONObject https://stleary.github.io/JSON-java/org/json/JSONObject.html
jdk中自带的json操作jar包,比较简单,不支持POJO类(对象实体)与json的互转。
str1样式为:{"A":"11","B":"22","C":"3"}
单独的字符创转化为json时可用:JSONObject myJsonObject1 =
new
JSONObject(str1);
myJsonObject1.get(“A”)=11,如果值为数组时,使用myJsonObject1.getJSONArray(“DD”)来获得数组信息。
str2样式为:{"春天":"花","秋天":"叶","冬天":"树干"},{"春天":"18","秋天":"6","冬天":"-2"}
数组类字符创转化为json时可用:JSONArray myJsonArray2
=
new
JSONArray(str2);
3、com.google.code.gson https://github.com/google/gson
谷歌出品的对于json操作的jar包,主要提供两个方法fromJson()和toJson()用于解析和生成json的方法。
使用举例:
POJO类:
public class User{
public Int id;
public String name;
public String description;
}
Gson gson = new Gson();
生成JSON字符串:
User user = new User(1,"wangli","今天天气不错");
String jsonStr = gson.toJson(user);
jsonStr输出为{"id":1,"name":"wangli","description":"今天天气不错"}
解析JSON字符串:
String jsonStr = {"id":2,"name":"fengjie","description":"我不喜欢下雨天"}
User user = gson.fromJson(jsonStr,User.class);
4、com.alibaba.fastjson.JSONObject https://github.com/alibaba/fastjson
Alibaba提供的开源json操作包,特点是比较快
使用举例:
序列化 String jsonString = JSON.toJSONString(user);
反序列化 User user = JSON.parseObject(jsonString,User.class);
还有List的应用,
序列化 List<User> users = new ArrayList<User>(); String jsonString = JSON.toJSONString(users);
反序列化 List< User > persons2 = JSON.parseArray(jsonString, User.class);
5、org.codehaus.jackson(v 1.0) , com.fasterxml.jackson(v 2.0 )https://github.com/FasterXML/jackson
使用较广泛的,用来序列化和反序列化 json 的 Java 的开源框架,是Spring MVC默认的json解析器。
序列化 ObjectMapper mapper = new ObjectMapper(); mapper.writeValueAsString(user);
反序列化 User user = mapper.readValue(jsonStr,User.
class
);