一、遇到问题

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会使用你提供的日期格式将日期对象转换为字符串,而不是使用默认的格式。
  • 第四个参数 需要格式化的格式