github官页:https://github.com/alibaba/fastjson

官方推荐的benchmark结果:https://github.com/eishay/jvm-serializers/wiki

官方文档的tutorial:http://code.alibabatech.com/wiki/display/FastJSON/Tutorial

maven的版本列表:http://mvnrepository.com/artifact/com.alibaba/fastjson

release note列表:http://code.alibabatech.com/wiki/display/FastJSON/Release+Notes

序列化和反序列化

API介绍

Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。

package com.alibaba.fastjson;
public abstract class JSON {
    public static final String toJSONString(Object object); // 序列化
    public static final Object parse(String text); // 反序列化
    public static final <T> T parseObject(String text, Class<T> clazz); // 带类型参数的反序列化
}

简单使用

序列化

Object o = ...;
String text = JSON.toJSONString(o);

反序列化为JSONObject对象

String text = ...; // 例如 {"name":"张老头", "age":66}
JSONObject json = JSON.parseObject(text);

反序列化为JavaBean

fastjson直接将json格式的文本直接反序列化为JavaBean对象

String text = ...; // 例如 {"name":"张老头", "age":66}
User user = JSON.parseObject(text, User.class);

将JavaBean对象转换为JSON对象

Object o = ....;
JSONObject json = (JSONObject) JSON.toJSON(o);

全序列化支持

fastjson能够支持绝大部分场景的java bean全序列化。也就是说,你可以直接把java bean序列化为json文本之后,能够按照原来的类型反序列化回来。支持全序列化,需要打开SerializerFeature.WriteClassName特性:

  • 序列化
    User user = ...;
    String text = JSON.toJSONString(user, SerializerFeature.WriteClassName);
  • 反序列化
    User user = (User) JSON.parse(); // 对于打开SerializerFeature.WriteClassName特性输出的JSON文本,能够直接反序列化为Java Bean对象。