fastjson默认将时间格式化为时间戳,如果我们想以时间字符串格式输出的话,暂提供两种方式
1.序列化器方式
声明DateJsonSerializer
public class DateJsonSerializer implements ObjectSerializer {
@Override
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,int features) throws IOException {
SerializeWriter out = serializer.getWriter();
if (object == null) {
serializer.getWriter().writeNull();
return;
}
out.write("\"" + DateUtil.date2Str(((Date)object),"yyyy-MM-dd") + "\"");
}
}
解析时使用DateJsonSerializer
SerializeConfig config = new SerializeConfig();
config.put(Date.class, new DateJsonSerializer());
return JSONObject.parseObject(JSON.toJSONString(data, config));
但是上面的解决方案面临一个问题,如果不满足上面的条件(多个date属性,而且需要按照不定的格式序列化这些日期属性),那么我们就需要另辟蹊径,使用fastjson的特性来完成:
2.bean字段声明方式
@JSONField(format="yyyyMMdd")
private Date date2;
@JSONField(format="yyyy-MM-dd HH:mm:ss")
private Date date3;