Java中Json字符串处理工具fastjson,它可以将Java对象序列化成json字符串,反过来可以将Json字符串解析成Java对象。本文主要介绍fastjson的下载和maven的配置,以及相关文档和使用方法以及一些常见问题。

1、fastjson的下载

1)maven中央仓库: http://central.maven.org/maven2/com/alibaba/fastjson/

2)Sourceforge.net : https://sourceforge.net/projects/fastjson/files/

2、Maven配置fastjson依赖(pom.xml)

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version> 1.2.54</version>
</dependency>

android版本

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.68.android</version>
</dependency>

3、fastjson常用的API

fastjson入口类是com.alibaba.fastjson.JSON,常用的API是JSON.toJSONString,和parseObject。

package com.alibaba.fastjson;
publicabstractclassJSON {
      publicstaticfinal String toJSONString(Object object);
      publicstaticfinal<T> T parseObject(String text, Class<T>clazz, Feature... features);
}

1)序列化

String jsonString =JSON.toJSONString(obj);

2)反序列化

VO vo =JSON.parseObject("...", VO.class);

3)泛型反序列化

import com.alibaba.fastjson.TypeReference;
List<VO> list = JSON.parseObject("...", new TypeReference<List<VO>>() {});

4、fastjson处理日期

1)fastjson处理日期的API很简单,例如:

JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss.SSS")

2)使用ISO-8601日期格式

JSON.toJSONString(obj, SerializerFeature.UseISO8601DateFormat);

3)全局修改日期格式

JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd";
JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);

反序列化能够自动识别如下日期格式:

  • ISO-8601日期格式
  • yyyy-MM-dd
  • yyyy-MM-dd HH:mm:ss
  • yyyy-MM-dd HH:mm:ss.SSS
  • 毫秒数字
  • 毫秒数字字符串
  • .NET JSON日期格式
  • new Date(198293238)

5、fastjson使用实例

fastjson的使用实例:https://github.com/alibaba/fastjson/wiki/Samples-DataBind

6、fastjson性能与gson对比

fastjson比gson快大约6倍,测试结果:https://github.com/eishay/jvm-serializers/wiki/Staging-Results 

7、fastjson专门or android版本

fastjson有专门的for android版本,去掉不常用的功能。jar占的字节数更小。git branch地址是:https://github.com/alibaba/fastjson/tree/android 

8、fastjson 如何处理超大对象和超大JSON文本

fastjson提供了Stream API,详细请看: https://github.com/alibaba/fastjson/wiki/Stream-api