对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. Kali2.0VMwareTools安装

    安装完系统后,配置好apt源,然后执行下列语句可成功安装VMwareTools工具,可实现本机与虚拟机之间的文件复制等功能: apt-get install open-vm-tools-desktop ...

  2. WIN7 WIN8 WIN10你们的WmiPrvSE.exe系统占用资源厉害吗?

    大家一起来做个实验吧.把你的支付宝安全控件和支付宝数字证书两个东东都卸掉.试试看电脑是否年轻几岁? 出处:百度贴吧原帖

  3. 《Matrix Computation 3rd》读书笔记——第4章 特殊线性系统

  4. 在skyDriver上保存代码

    在家里写的代码, 有时候在公司也想打开改一改. 以前, 我都是使用优盘进行拷贝, 或者直接在优盘上进行操作. 有时, 忘了带优盘就傻眼了. 也想过直接托管到代码托管网站. 但主流的一些托管,都是要开源 ...

  5. 嵌入式系统添加无线wifi模块

    开发环境:fl2440开发板,linux3.0内核,交叉编译器路径/opt/buildroot-2011.11/arm920t/usr/bin/arm-linux-,无线网卡RT3070 平时开发板联 ...

  6. Mysql 日志 (转)

    MySQL日志: 主要包含:错误日志.查询日志.慢查询日志.事务日志.二进制日志: 错误日志 在mysql数据库中,错误日志功能是默认开启的.并且,错误日志无法被禁止.默认情况下,错误日志存储在mys ...

  7. excel 导入数值变成科学记数的解决办法.

    string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=Yes;IM ...

  8. 根据Request获取客户端IP 内网IP及外网IP

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实 ...

  9. cWeb开发框架,基于asp.net的cWeb应用开发平台介绍(一)

    cWeb开发框架是基于asp.net的B/S应用开发平台,采用三层架构理论,应用简单.代码简洁.运行快速. cWeb是bubufx提供,是分享资源,无任何版权限制,bubufx继续传承互联网精神,可随 ...

  10. 【Infobright】infobright数据导入导出测试

    创建数据库 create database if not exists `mytestdb` default charset=utf8; use mytestdb; 说明: 如果使用utf8字符集,则 ...