对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. VS常用快捷键

    智能提示:ctrl + J方法参数提示:ctrl + shift +空格智能标记(如:提示using.实现接口.抽象类等):ctrl + .执行测试:ctrl + R,T(当前上下文),ctrl + ...

  2. C#使用quartz.net定时问题

    因工作需要需要完成定时查询数据..因此在了解之后完成了一个demo 所需要的dll在该地址下载 http://pan.baidu.com/s/1sjNQLXV 首先引入quartz这个dll... 在 ...

  3. vs增加第三方依赖库的方法总结

    转自http://blog.csdn.net/raodotcong/article/details/8998379 先说说普通的两种方法: 方法1:  通过设置工程配置来添加lib库. 转自网上: A ...

  4. Java JDK配置环境变量

    JDK的配置环境变量. 1.下载JDK,然后安装(点下一步). 2.右键单击  "计算机" ,选择  "属性".   3.单击 "高级系统设置&quo ...

  5. 字符串hash算法

    http://www.cnblogs.com/zyf0163/p/4806951.html hash函数对大家来说不陌生吧 ? 而这次我们就用hash函数来实现字符串匹配. 首先我们会想一下二进制数. ...

  6. 安卓开发学习经历2--《第一行代码》coolweather项目SQL语句同一个“陷阱”掉两次 注意转义字符等特殊字符正确书写 关于Id字段自增加体会

    今天,在运行<第一行代码>coolweather第二阶段代码,又一次报错,还是神奇地与昨天相似,提示,city_id字段不存在,这里我有两种理解,一种是sql语句出错了,另外一种是没有获取 ...

  7. Python之路,day11-Python基础

    回顾:进程一个程序需要运行所需的资源的集合每个进程数据是独立的每个进程里至少有一个线程进程里可以有多个线程线程数据是共享的一个进程的多个线 6程可以充分利用多核cpumultiprocessing p ...

  8. python中字典的使用

    python中的字典的特性: 在字典中的元素是散列存放的,没有顺序, 在进行增删改查的时候使用字典中需要的关键字(key)即可. 一: 创建字典 1)直接定义一个: dict = {'ob1':'co ...

  9. Ansible Tower

    # Generated by iptables-save v1.4.7 on Tue Aug 23 04:58:34 2016 *filter :INPUT ACCEPT [0:0] :FORWARD ...

  10. 常用软件:Bugzilla的搭建(转)

    1.安装依赖包yum -y install php perl httpd mod_ssl mysql-server mysql-devel mysql php-mysql gcc mod_perl-d ...