我正在使用Jackson 2.8.1进行java对象的序列化。但是,在将ZonedDateTime对象转换为“WRITE_DATES_WITH_ZONE_ID”设置为false的字符串时,我无法摆脱区域ID
ObjectMapper mapper = new ObjectMapper()
.findAndRegisterModules()
.setSerializationInclusion(Include.NON_EMPTY)
.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
.configure(SerializationFeature.WRITE_DATES_WITH_ZONE_ID, false);
ZonedDateTime zdt = ZonedDateTime.now();
System.out.println(mapper.writeValueAsString(zdt)); // "2016-08-23T13:35:38.127+08:00[Asia/Shanghai]"
任何人都可以帮忙吗?
答案 0 :(得分:2)
我想说问题是因为你叫“findAndRegisterModules”。
您可能添加了以下依赖项:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson.version}</version>
</dependency>
这样做,您引入了两个新模块:“JSR310Module”(不建议使用)和“JavaTimeModule”。
“findAndRegisterModules”可以注册不能正确支持WRITE_DATES_WITH_ZONE_ID功能的“JSR310Module”。
您可以通过删除“findAndRegisterModules”并添加:
来注册正确的模块JavaTimeModule module = new JavaTimeModule();
registerModule(module);
然后,不要忘记在映射器中禁用WRITE_DATES_WITH_ZONE_ID:
disable(SerializationFeature.WRITE_DATES_WITH_ZONE_ID);