Java中Date类型字段转成JSON字符串会自动转换为时间戳

一、遇到问题

Java中自定义的实体类对象中存在Date类型字段,字段值为:2023-10-18 22:20:53。将该实体类对象使用FastJSON转成JSON字符串后,发现时间字段变成了“1697638853”这样的时间戳

二、解决方法

针对上述问题,FastJSON提供了解决方法

引入包

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.48</version>
        </dependency>

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

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2023年12月14日
下一篇 2023年12月14日

相关推荐