对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. 原生js tab 栏切换

    <div id="box"> <div> <button>按钮1</button> <button>按钮2</bu ...

  2. FMS 4中multicast脚本的小修正

    FMS 4中multicast脚本的小修正 http://help.adobe.com/en_US/flashmediaserver/devguide/WS7812b00092aae0dc-2829d ...

  3. Json与javaBean之间的转换工具类

    /**  * Json与javaBean之间的转换工具类  *  * {@code 现使用json-lib组件实现  *    需要  *     json-lib-2.4-jdk15.jar  * ...

  4. C#中ref,out

    out 关键字会导致参数通过引用来传递.这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化.若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字 比如 ...

  5. 2016.12.01 搭建dendroid备忘

    在2014年的时候看了freebuf的那篇,感觉很6,2014年搭了就一遍成功了,事过两年,物是人非啊,2016搞了云,没事测试,搞了一遍死活不成功,第二天测试成功,过程逗比坎坷,没什么难的 //环境 ...

  6. Obiee11g变量

    原文地址:http://xee123.blog.163.com/blog/static/277119942012612104438332/ Obiee 版本 11.1.1.5 库变量 库变量在同一时刻 ...

  7. 利用linux漏洞进行提权

    RHEL5—RHEL6下都可以提权 本人测试环境CenOS6.5:该方法只能用作与有root用户切换到普通用户的环境,如果是普通用户直接登录在执行最后一步的时候直接退出登录 $ mkdir /tmp/ ...

  8. System.Linq.Enumerable 中的方法 Aggregate 函数

      语法: public static TSource Aggregate<TSource>( this IEnumerable<TSource> source, Func&l ...

  9. 关于浏览器兼容问题及hack写法

    浏览器的兼容问题 1.浏览器内核: Mozilla Firefox ( Gecko ) Internet Explorer ( Trident ) Opera ( Presto ) Safari ( ...

  10. P1382 光棍组织

    我现在TMD连dfs都不会写了 原题: MM 虽然一辈子只要一个,但是也得早点解决.于是,n 个光棍们自发组成了一个光棍组织(ruffian organization,By Wind 乱译).现在,光 ...