本节我们来简单介绍一下fastjson对日期的处理
fastjson处理日期的API很简单,例如:
JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss.SSS");
使用ISO-8601日期格式
JSON.toJSONString(obj, SerializerFeature.UseISO8601DateFormat);
全局修改日期格式
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)
下面来看看具体的代码示例:
User 类:
package json.fastjson.date;
import java.util.Date;
public class User {
private Long id;
private String name;
// 增加时间字段
private Date date;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", date=" + date + "]";
}
}
测试类:
package json.fastjson.date;
import java.util.Date;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
public class TestDate {
public static void main(String[] args) {
User user = new User();
user.setId(2L);
user.setName("guest");
user.setDate(new Date());
// 序列化
String jsonString = JSON.toJSONString(user);
System.out.println("序列化:" + jsonString);
// 序列化处理时间,方式一
jsonString = JSON.toJSONStringWithDateFormat(user, "yyyy-MM-dd HH:mm:ss.SSS");
System.out.println("序列化处理时间,方式一:" + jsonString);
// 序列化处理时间,方式二:ISO-8601日期格式
jsonString = JSON.toJSONString(user, SerializerFeature.UseISO8601DateFormat);
System.out.println("序列化处理时间,方式二:ISO-8601日期格式:" + jsonString);
// 序列化处理时间,方式三:全局修改日期格式
JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd";
jsonString = JSON.toJSONString(user, SerializerFeature.WriteDateUseDateFormat);
System.out.println("序列化处理时间,方式三:全局修改日期格式:" + jsonString);
}
}
输出结果:
序列化:{"date":1516884789616,"id":2,"name":"guest"}
序列化处理时间,方式一:{"date":"2018-01-25 20:53:09.616","id":2,"name":"guest"}
序列化处理时间,方式二:ISO-8601日期格式:{"date":"2018-01-25T20:53:09.616+08:00","id":2,"name":"guest"}
序列化处理时间,方式三:全局修改日期格式:{"date":"2018-01-25","id":2,"name":"guest"}