即使明确禁用反序列化,Jackson ObjectMapper也会将日期调整为上下文时区

时间:2016-08-03 21:45:03

标签: java jackson jodatime

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

  

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

Joda DateTime字段声明如下:

paint

映射器:

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

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

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")

1 个答案:

答案 0 :(得分:3)

DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE反序列化功能,在执行序列化时未考虑这一点。

一种可能的解决方案是使用select t.customer_id, t.indicator, sum(case when indicator = 1 then salary else - salary end) over (partition by customer_id) as netresult form @table t; 创建ObjectMapper实例:

TimeZone

有关详细信息,请查看DateTimeSerializer代码。