对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的更多相关文章

  1. json对象和java对象的相互转换方法(json-lib、jackson、fastjson、gson)

    一 使用json-lib包下的JSONObject和JSONArray转换 代码如下: package com.test.test; import java.util.ArrayList; impor ...

  2. Json 工具介绍 fastjson gson jackson

    1. fastjson fastjson是一个Java语言编写的高性能功能完善的JSON库.它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致, 是目前Java语言中最快的J ...

  3. [转] 各种Json解析工具比较 - json-lib/Jackson/Gson/FastJson

    JSON技术的调研报告 一 .各个JSON技术的简介和优劣1.json-libjson-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,包括com ...

  4. FastJSON、Gson和Jackson性能对比

    Java处理JSON数据有三个比较流行的类库FastJSON.Gson和Jackson.本文将测试这三个类库在JSON序列化和反序列化的方面表现,主要测试JSON序列化和反序列化的速度.为了防止由于内 ...

  5. FastJSON、Gson、Jackson(简单了解使用)

    下载地址(maven) Jackson:http://mvnrepository.com/search?q=jackson FastJson:http://mvnrepository.com/sear ...

  6. Android JSON 解析库的使用 - Gson 和 fast-json

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...

  7. Android总结之json解析(FastJson Gson 对比)[申明:来源于网络]

    Android总结之json解析(FastJson Gson 对比)[申明:来源于网络] 地址:http://blog.csdn.net/u014031072/article/details/5392 ...

  8. Jackson Gson Json.simple 比较

    为公司做了小任务,需要用到Java Json库,Json库我几个月之前就用过,不过那时候是跟着项目来的,延续了项目的使用习惯直接用了jackson Json,而这次我觉得好好比较一下几个常见的Json ...

  9. FastJson和Gson和Json数据解析分析和用法

    首先分析下目前号称最快的FastJson,这个是所有人都验证过的,解析速度确实比较快,不过也需要根据数据量来看,数据量小的时候,Gson性能要稍微优于FastJson,但在数据量大解析的情况下,Fas ...

随机推荐

  1. Rxjava的基本使用

    gradle配置: compile 'io.reactivex:rxjava:1.0.9' 观察者: Observer<String> observer = new Observer< ...

  2. 向内存0:200~0:23f依次传送数据0~3fh

    只能用字节为单位传送了. assume cs:sad sad segment start: mov ax, 20h mov ds, ax mov cx, 40h s: mov [bx], bl inc ...

  3. cache manifest 格式

    下面说明书写 cache manifest 文件需要遵循的格式.1 首行必须是 CACHE MANIFEST.2 其后,每一行列出一个需要缓存的资源文件名.3 可根据需要列出在线访问的白名单.白名单中 ...

  4. Codeforces Round #168 (Div. 2)

    A. Lights Out 模拟. B. Convex Shape 考虑每个黑色格子作为起点,拐弯次数为0的格子构成十字形,拐弯1次的则是从这些格子出发直走达到的点,显然需要遍历到所有黑色黑色格子. ...

  5. etl学习系列1——etl工具安装

    ETL(Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可 ...

  6. Get Jenkins job build queue length

    Jenkins API doesn’t provide the job build queue length. Hence, it seems we have to parse the html to ...

  7. HackerRank-Longest Subarray

    give an array and target value, find the max length of the subarray which sum of the elements is les ...

  8. CocoaPods创建私有pods

    由于项目需求,需要把项目的不同模块拆分出来即 组件化 ,一开始想做成多target模式,后来换成私有pods CocoaPods的安装和使用,网上很多,自行搜索即可. 听说可以基于svn创建pod私有 ...

  9. Legacy Notes网络和服务端配置的笔记

    在云服务器上使用LAMP全过程: 第一步:传文件 在windows上下载winscp,连接使用scp协议.注意:centos需要安装scp yum install openssh-clients 即可 ...

  10. 承接cardboard外包,unity3d外包(北京动软— 谷歌CARDBOARD真强大)

    手把手教你玩转googlecardboard[不知道在这里发可以不?] 谷歌Google I/O开发者大会于北京时间6月26日0点在美国旧金山举行,谷歌发布了Android L手机系统:Android ...