首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

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

2012-06-27 
JAVA对象转成JSON的三种开源实现方式第一种方式:Google的GsonGson 是 Google 提供的用来在 Java 对象和 JS

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 的 类库,是一个深度转换的过程

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性能较好,速度较快。

    ?

热点排行