1.下载地址
https://github.com/alibaba/fastjson
2.maven
<!-- JAVA -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.36</version>
</dependency>
<!-- Android -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.61.android</version>
</dependency>
3.序列化
序列化就是把JavaBean对象转化成JSON格式的文本。
Object obj = ...;
String text = JSON.toJSONString(obj);
在这个例子中,调用JSON.toJSONString方法,把对象obj转化为JSON格式的文本
4.日期格式化
fastjson直接支持日期类型数据的格式化,包括java.util.Date、java.sql.Date、java.sql.Timestamp、java.sql.Time。
缺省情况下,fastjson将Date类型序列化为long,这个使得序列化和反序列化的过程不会导致时区问题。例如:
long millis = 1324138987429L;
Date date = new Date(millis);
System.out.println(JSON.toJSONString(date));
输出的结果是
1324138987429
fastjson提供了基于格式化输出的SerializerFeature,例如:
JSON.toJSONString(new Date(), SerializerFeature.WriteDateUseDateFormat);
输出的结果为:
"2017-08-09 10:24:22"
利用toJSONStringWithDateFormat
可以指定输出日期的格式,比如修改为输出毫秒:
JSON.toJSONStringWithDateFormat(new Date(), "yyyy-MM-dd HH:mm:ss:SSS");
输出的结果为:
"2017-08-09 10:26:41:745"
5.WriteClassName
fastjson支持序列化时写入类型信息,从而使得反序列化时不至于类型信息丢失。例如:
Student student = new Student();
student.setName("zhangsan");
student.setAge("20");
student.setSex("男");
String text = JSONObject.toJSONString(student,SerializerFeature.WriteClassName);
System.out.println(text);
输出的结果为:
{"@type":"com.wxs.Student","age":"20","name":"zhangsan","sex":"男"}
6.@JSONField Annotation
在某些场景,你可能需要定制序列化输出,比如说,希望序列化采用之后采用”SEX”,而不是”sex”,你可以使用@JSONField这个Annotation。
public class Student {
...
@JSONField(name="SEX")
private String sex;
...
}
Student student = ...;
JSON.toJSONString(student); // {...,"SEX":"男",...}
7.指定Class反序列化
Student s = JSON.parseObject(text, com.wxs.Student.class);