加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 即使明确禁用反序列化,Jackson ObjectMapper也会将日期

发布时间:2020-12-15 01:06:14 所属栏目:Java 来源:网络整理
导读:这是我想要序列化/反序列化的JSON日期格式: 2014-06-18T06:26:56-07:00 Joda DateTime字段声明如下: @JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd'T'HH:mm:ssZ") private DateTime dueTime; 映射器: ObjectMapper mapper = new Ob

这是我想要序列化/反序列化的JSON日期格式:

“2014-06-18T06:26:56-07:00”

Joda DateTime字段声明如下:

  @JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd'T'HH:mm:ssZ")
    private DateTime dueTime;

映射器:

ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT)
            .registerModule(new JodaModule())
            .disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);

mapper.writeValueAsString(objectWithDT)).as("application/json")

在生成的JSON中,上面带有时区的日期更改为:

2014-06-18T13:26:56+0000
最佳答案
DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE是反序列化功能,在执行序列化时不会将其考虑在内.

一种可能的解决方案是使用TimeZone创建ObjectMapper实例:

ObjectMapper mapper =  new ObjectMapper()
            .enable(SerializationFeature.INDENT_OUTPUT)
            .disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE)
            .registerModule(new JodaModule())
            .setTimeZone(TimeZone.getTimeZone("GMT-7"));

有关更多详细信息,请查看DateTimeSerializer代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读