JAVA对象转成JSON的三种开源实现方式

第一种方式:Google的Gson


Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

示例代码:

Gson gson = new Gson();
int[] ints = {1, 2, 3, 4, 5};
String[] strings = {"abc", "def", "ghi"};

(Serialization)
gson.toJson(ints);     ==> prints [1,2,3,4,5]
gson.toJson(strings);  ==> prints ["abc", "def", "ghi"]

下载链接:

http://code.google.com/p/google-gson/downloads/list


第二种方式:Flexjson 



Flexjson 是一个将 Java 对象转成 JSON 的 类库,是一个深度转换的过程

示例代码:

public String doSomething( Object arg1, ... ) { 
  Person p = ...load a person...; 
  JSONSerializer serializer = new JSONSerializer(); 
  return serializer.serialize( p ); 
}

执行结果:

{ "class": "Person", "name": "William Shakespeare", "birthday": -12802392000000, "nickname": "Bill" }

下载链接:

http://sourceforge.net/projects/flexjson/files/


第三种方式:阿里巴巴的fastjson 


fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。

主要特点:

  • 快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson
  • 强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
  • 零依赖(没有依赖其它任何类库除了JDK)

示例代码:

 

import com.alibaba.fastjson.JSON;


Group group = new Group();

group.setId(0L);

group.setName("admin");


User guestUser = new User();

guestUser.setId(2L);

guestUser.setName("guest");


User rootUser = new User();

rootUser.setId(3L);

rootUser.setName("root");


group.getUsers().add(guestUser);

group.getUsers().add(rootUser);


String jsonString = JSON.toJSONString(group);


System.out.println(jsonString);

下载链接:

http://code.alibabatech.com/wiki/display/FastJSON/Download

 


三种方式代码实现如下:

//Google实现

Gson gson = new Gson();

String jsonStr = gson.toJson(student1);

System.out.println(jsonStr);

Student student3 = gson.fromJson(jsonStr, Student.class);

System.out.println(student3);

 

//Flexjson实现

JSONSerializer serializer = new JSONSerializer(); 

String jsonStr2 = serializer.serialize(student1); 

System.out.println(jsonStr2);

JSONDeserializer<Student> deserializer = new JSONDeserializer<Student>();

Student student2 = deserializer.deserialize(jsonStr2, Student.class);

System.out.println(student2);

 

//Alibaba实现 

String jsonString = JSON.toJSONString(student1);

System.out.println("alibaba json:::"+jsonString);

Student student = JSON.parseObject(jsonString, Student.class);

System.out.println(student);

imports:

 

import com.alibaba.fastjson.JSON;

import com.google.gson.Gson;

import flexjson.JSONDeserializer;

import flexjson.JSONSerializer;

 

 


三种实现方式性能对比:

 

FlexJson第一快、耗时最低,Google Gson第二快、耗时第二,Alibaba FastJson第三快、耗时最长

所以转换还是用FlexJson性能较好,速度较快。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值