Я использую Jackson 2.8 и нуждаюсь в общении с API, который не позволяет миллисекунды в пределах временных меток ISO 8601.
Ожидаемый формат: "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
, который работает.
Есть ли какой-нибудь хороший способ, используя какой-либо параметр конфигурации, чтобы решить эту проблему?