json工具包比较 fastjson jackson gson
对json进行json-object进行相互转化时,笔者接触到三种工具jar,现对其进行比较。
fastjson:速度最快,阿里巴巴开源。
jackson:springMvc 默认使用。
gson:谷歌开源。
下面就按照 学校—年级—班级 举例一个比较特殊的json串。
[
{
"NAME":"学校1",
"STULIST":[{"Name":"学生1"},{"Name":"学生2"}]
},
{
"NAME":"学校2",
"STULIST":[{"Name":"学生1"},{"Name":"学生2"}]
}
]
以上是gson转化的。
当用fastjson时,如下:
[{"nAME":"学校1","sTULIST":[{"name":"学生1"},{"name":"学生2"}]},{"nAME":"学校2","sTULIST":[{"$ref":"$[0].sTULIST[0]"},{"$ref":"$[0].sTULIST[1]"}]}]
真难理解{"$ref":"$[0].sTULIST[0]"}为什么出现,看来速度最快还是需要付出代价的。
当用jackson时,如下:
[{"name":"学校1","stulist":[{"name":"学生1"},{"name":"学生2"}]},{"name":"学校2","stulist":[{"name":"学生1"},{"name":"学生2"}]}]
三种不同的json串实际是用同一个Object转化的,造成不同的原因如下:
Object中字段名用的是大写。字段中对象的映射的用的是同一个({"$ref":"$[0].sTULIST[0]"}出现的原因)。
综上:如果中规中矩的规定json格式文档,那么还是推荐使用fastjson,速度快,直接使用静态方法简单。
如果实在面对了非正常的,那么推荐gson进行解析。这里,先留下一个问题:springMvc进行影射时,是否可以替换jackson?
最后:给出代码以及相应的jar包的maven配置。
public class School implements Serializable{
private static final long serialVersionUID = 3585956609245039680L;
private String NAME;
private List<Grade> STULIST;
public String getNAME() {
return NAME;
}
public void setNAME(String nAME) {
NAME = nAME;
}
public List<Grade> getSTULIST() {
return STULIST;
}
public void setSTULIST(List<Grade> sTULIST) {
STULIST = sTULIST;
}
}
public class Grade implements Serializable{
private static final long serialVersionUID = -4663159506410560454L;
private String Name;
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
}
public class App {
public static void main( String[] args ) throws Exception
{
Grade stu1 = new Grade();
stu1.setName("学生1");
Grade stu2 = new Grade();
stu2.setName("学生2");
Grade stu3 = new Grade();
stu3.setName("学生3");
Grade stu4 = new Grade();
stu4.setName("学生4");
List<Grade> stuList = new ArrayList<Grade>();
stuList.add(stu1);
stuList.add(stu2);
List<Grade> stuList2 = new ArrayList<Grade>();
stuList2.add(stu1);
stuList2.add(stu2);
School group1 = new School();
group1.setNAME("学校1");
group1.setSTULIST(stuList);
School group2 = new School();
group2.setNAME("学校2");
group2.setSTULIST(stuList2);
List<School> groupList = new ArrayList<School>();
groupList.add(group1);
groupList.add(group2);
System.out.println("fastjson :");
String fastjsonJson = JSONObject.toJSONString(groupList);
System.out.println(fastjsonJson);
System.out.println("\r\n jackson :");
ObjectMapper m = new ObjectMapper();
String jacksonJson = m.writeValueAsString(groupList);
System.out.println(jacksonJson);
System.out.println("\r\n gson :");
Gson gson = new Gson();
String gsonJson = gson.toJson(groupList);
System.out.println(gsonJson);
}
}
<!-- fastjson 依赖jar -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.7</version>
</dependency> <!-- gson 依赖jar -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.6.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.6.3</version>
</dependency> <!-- gson 依赖jar -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.2</version>
</dependency>
json工具包比较 fastjson jackson gson的更多相关文章
- json对象和java对象的相互转换方法(json-lib、jackson、fastjson、gson)
一 使用json-lib包下的JSONObject和JSONArray转换 代码如下: package com.test.test; import java.util.ArrayList; impor ...
- Json 工具介绍 fastjson gson jackson
1. fastjson fastjson是一个Java语言编写的高性能功能完善的JSON库.它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致, 是目前Java语言中最快的J ...
- [转] 各种Json解析工具比较 - json-lib/Jackson/Gson/FastJson
JSON技术的调研报告 一 .各个JSON技术的简介和优劣1.json-libjson-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,包括com ...
- FastJSON、Gson和Jackson性能对比
Java处理JSON数据有三个比较流行的类库FastJSON.Gson和Jackson.本文将测试这三个类库在JSON序列化和反序列化的方面表现,主要测试JSON序列化和反序列化的速度.为了防止由于内 ...
- FastJSON、Gson、Jackson(简单了解使用)
下载地址(maven) Jackson:http://mvnrepository.com/search?q=jackson FastJson:http://mvnrepository.com/sear ...
- Android JSON 解析库的使用 - Gson 和 fast-json
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...
- Android总结之json解析(FastJson Gson 对比)[申明:来源于网络]
Android总结之json解析(FastJson Gson 对比)[申明:来源于网络] 地址:http://blog.csdn.net/u014031072/article/details/5392 ...
- Jackson Gson Json.simple 比较
为公司做了小任务,需要用到Java Json库,Json库我几个月之前就用过,不过那时候是跟着项目来的,延续了项目的使用习惯直接用了jackson Json,而这次我觉得好好比较一下几个常见的Json ...
- FastJson和Gson和Json数据解析分析和用法
首先分析下目前号称最快的FastJson,这个是所有人都验证过的,解析速度确实比较快,不过也需要根据数据量来看,数据量小的时候,Gson性能要稍微优于FastJson,但在数据量大解析的情况下,Fas ...
随机推荐
- 用canvas生成二维码
$("#actimg").qrcode({ render: "canvas", //设置渲染方式,有tabl ...
- hdu2348题解
又恬不知耻的开始写题解了,暑假到了,QAQ然而想我这样的弱逼是没有暑假的sad,还是老老实实刷题吧. 题目大意:给一个小车的宽度和长度和两条道路的宽度,判断小车能否通过. 思路:可以先看下面的图,我们 ...
- Github注册账户过程
首先打开网站https://github.com/ 第一个是输入用户名第二个是邮箱第三个是自己的密码然后点 sign up for github 此时会有个邮箱注册的验证进入注册的邮箱点击认证. ...
- java IO基础操作
java IO基础,通熟易懂,好久没复习java 基础了.这里是传送门... http://www.cnblogs.com/nerxious/archive/2012/12/15/2818848.ht ...
- template 不能分别在.h和.cpp中定义模板
先上代码: #ifndef SEQLIST_H #define SEQLIST_H #include <iostream> ; template <typename type> ...
- pvoid64 pvoid
如果需要某一个结构体,既在kernel space用,又在user space用,如 typedef struct { PVOID data; int size; }binary,pbinary; 上 ...
- 【转载】Chaotic Time-Series Prediction
原文地址:https://cn.mathworks.com/help/fuzzy/examples/chaotic-time-series-prediction.html?requestedDomai ...
- UML类图分析
继承: 实现: 关联: 依赖: 组合: 聚合:
- Java单例模式(转载)
原文地址:1:http://www.cnblogs.com/hupp/p/4487521; 2:http://cantellow.javaeye.com/blog/838473 先罗列五种单例模式的实 ...
- WIN7 WIN8 WIN10你们的WmiPrvSE.exe系统占用资源厉害吗?
大家一起来做个实验吧.把你的支付宝安全控件和支付宝数字证书两个东东都卸掉.试试看电脑是否年轻几岁? 出处:百度贴吧原帖