这是我要序列化/反序列化的 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
代码。
关于java - 即使明确禁用,Jackson ObjectMapper 也会在反序列化时将日期调整为上下文时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38754147/