Fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
Fastjson的主要优点是速度快,使用简单,在国内使用比较广泛。
配置
使用Fastjson,只需要引入一个包。
Maven配置
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.73</version>
</dependency>
为Android定制的版本,去掉了不常用的功能,包更小:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.72.android</version>
</dependency>
Gradle配置
compile 'com.alibaba:fastjson:1.2.73'
Android版本:
compile 'com.alibaba:fastjson:1.1.72.android'
基本API及用法
在使用Fastjson时,其入口类为com.alibaba.fastjson.JSON。
JSON类中最常用的是toJSONString(Object object)和parseObject(String json, Class<T> clazz, Feature... features)两个方法。
通过一个简单的例子,来快速的了解一下Fastjson的基本用法:
Model model = new Model(); // 创建一个简单的Java对象,给字段设置一些值
String json = JSON.toJSONString(model); // 将model对象序列化为JSON字符串
Model model2 = JSON.parseObject(json, Model.class); // 将json字符串反序列化为Model对象
是的,就是这么简单,日常大多数序列化操作只需要使用这两个方法。
如果要反序列化的目标类,为带有泛型参数的类型(例如List<Model>
),那么Fastjson提供了TypeReference类来支持:
String json = "...";
List<Model> list = JSON.parseObject(json, new TypeReference<List<Model>>() {});
之所以要这么写,是因为Java不支持List<Model>.class
这种写法。而如果写成List.class,又识别不了元素的类型为Model,从而无法正确的反序列化。
好的,Fastjson入门篇就先讲这么多了。