一、遇到问题
Java中自定义的实体类对象中存在Date类型字段,字段值为:2023-10-18 22:20:53。将该实体类对象使用FastJSON转成JSON字符串后,发现时间字段变成了“1697638853”这样的时间戳
二、解决方法
针对上述问题,FastJSON提供了解决方法
引入包
com.alibabafastjson1.2.48
方法1:在对应的实体类的属性上方定义一个注解
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
方法2: 在servlet中将数据转换成json对象时,使用
String jsonString = JSON.toJSONString(date, SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.WriteDateUseDateFormat, "yyyy-MM-dd HH:mm:ss");
在这个方法中,你提供了一些参数:
- 第一个参数
date
是你想要转换为 JSON 的 Java 对象,这里看起来像是你想将一个日期对象转换为 JSON。 - 第二个参数
SerializerFeature.DisableCircularReferenceDetect
是一个序列化特性,用于禁止循环引用检测。如果对象中存在循环引用(一个对象引用自身或者多个对象之间形成环状引用),这个特性可以防止程序因为无限递归而崩溃。如果你确定你的对象中没有循环引用,或者你希望忽略循环引用,那么可以使用这个特性。 - 第三个参数
SerializerFeature.WriteDateUseDateFormat
也是一个序列化特性,用于控制Fastjson如何将日期对象转换为字符串。如果你提供了这个特性,Fastjson会使用你提供的日期格式将日期对象转换为字符串,而不是使用默认的格式。 - 第四个参数 需要格式化的格式