之前被Json-lib库坑过,解析的太tm慢了。切换成FastJson库后性能有了质的飞跃。借此整理一下各json库
一、Json-lib库
最古老、使用范围最广,但是性能最差的一款json库。不推荐!
添加依赖:
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
使用方法:
- java对象(包括list、map)转json字符串:String jsonStr=JSONObject.fromObject(bean).toString()
- json字符串转java对象:Bean bean=(Bean) JSONObject.toBean(JSONObject.fromObject(jsonStr), Bean.class)
二、Gson库
功能最全的json解析器,google谷歌出品
需要依赖:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
使用方法:
- java对象(包括list、map)转json字符串:String jsonStr=new Gson().toJson(bean);
- json字符串转java对象:Bean bean=new Gson().fromJson(jsonStr, Bean.class)
- json字符串转list对象:List<Bean> beanList =new Gson().fromJson(jsonStr, new TypeToken<List<Bean>>(){}.getType());
- json字符串转map对象:Map<String,String>map=new Gson().fromJson(str, new TypeToken<HashMap<String,String>>(){}.getType());
三、Jackson库(springboot项目可以直接只用,无需引包)
最流行的json库。springMVC默认的json库就是jackson。
需要依赖:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.10.1</version>
</dependency>
使用方法:
- java对象(包括list、map)转json字符串:String jsonStr=new ObjectMapper().writeValueAsString(bean);
- json字符串转java对象:Bean bean=new ObjectMapper().readValue(jsonStr, Bean.class)
- json字符串转list对象:List<Bean> beanList = new ObjectMapper().readValue(jsonStr, new TypeReference<ArrayList<Bean>>() {});//TypeReference匿名内部类,指明对象类型
- json字符串转map对象:Map<String,String>map=new ObjectMapper().readValue(jsonStr, new TypeReference<HashMap<String,String>>(){});
四、FastJson库(推荐)
阿里出品的json库,解析速度非常快。但是被曝出过漏洞问题,使用最新版的就好。
添加依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
使用方法:
- java对象(包括list、map)转json字符串:String jsonStr=JSON.toJSONString(bean);
- json字符串转java对象:Bean bean=JSONObject.parseObject(jsonStr, Bean.class)
- json字符串转list对象:List<Bean> beanList =JSONObject.parseArray(jsonStr, Bean.class);
- json字符串转map对象:Map<String,String>map=JSONObject.parse(jsonStr);
五、各json库对比
没时间写了,借用一下网图对比一下各json库性能
序列化性能如下:
反序列化性能如下:
综上:
数据量少时:Gson快
数据量多时:FastJson快
数据量无论多少:Jackson最稳定
排名:
FastJson>Jackson>Gson>Json-lib
以后有时间了再测试一下