Jackson , java.time , ISO 8601 , 序列化不带毫秒
我使用的是 Jackson 2.8,需要与不允许在 ISO 8601 时间戳内显示毫秒的 API 进行通信。
预期的格式是这样的:"2016-12-24T00:00:00Z"
我正在使用Jackson的JavaTimeModule,设置为.WRITE_DATES_AS_TIMESTAMPS
false
但这将打印几毫秒。
所以我试图使用没有改变任何东西的东西。objectMapper.setDateFormat
我目前的解决方法是:
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
有没有使用一些配置参数来解决这个问题的好方法?