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
。
これを解決するためにいくつかの構成パラメーターを使用する良い方法はありますか?