我正在使用 Jackson 2.8,并且需要与不允许在 ISO 8601 时间戳内毫秒数的 API 进行通信。
预期的格式是这样的:"2016-12-24T00:00:00Z"
我正在使用 Jackson 的 JavaTimeModule 并WRITE_DATES_AS_TIMESTAMPS
设置为false
.
但这将打印毫秒。
所以我尝试使用objectMapper.setDateFormat
which 并没有改变任何东西。
我目前的解决方法是这样的:
ObjectMapper om = new ObjectMapper();
DateTimeFormatter dtf = new DateTimeFormatterBuilder()
.appendInstant(0)
.toFormatter();
JavaTimeModule jtm = new JavaTimeModule();
jtm.addSerializer(Instant.class, new JsonSerializer<Instant>() {
@Override
public void serialize(Instant value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {
gen.writeString(dtf.format(value));
}
});
om.registerModule(jtm);
我正在覆盖适用的默认序列化程序Instant.class
。
有没有什么好方法使用一些配置参数来解决这个问题?