版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012815136/article/details/87865508
fastjson简介
fastjson是阿里巴巴的开源JSON解析库
fastjson序列化日期类型数据的问题
默认情况下,fastjson在序列化日期类型的数据时,会把对应值序列化为一个long类型的值,该long类型的值其实是表示1970年1月1日至今的毫秒数
- 如果上面经fastjson序列化后的数据由其它的JSON解析库来进行反序列化,有可能会报错,导致无法完成反序列化;
- 虽然上面经fastjson序列化后的数据由fastjson本身来进行反序列化不会报错,能完成反序列化,但是反序列化后相应日期的值仍然为一个long类型的值,无法还原为类似"2018-08-02 15:20:20"格式的日期;
- 综上,如果不修正这个问题,将导致相应报文数据不能在不同应用(系统)间进行传输。
解决问题
序列化时,将日期类型的数据统一按一个日期格式序列化为字符串,对接的应用(系统)可以毫无问题地将数据进行反序列化
-
方案一:调用fastjson提供的专用API处理
import com.alibaba.fastjson.JSON; // 省略其它代码,resultMap为一个包含日期类型数据的bean JSON.toJSONStringWithDateFormat(resultMap, "yyyy-MM-dd HH:mm:ss");
处理后,数据序列化为:
更多的API参考fastjson(三)处理日期 -
方案二:使用fastjson提供的注解,在相应的bean属性上加上@JSONField注解处理,如下示例