2

Spring Boot を使用して開始されたこの Spring MVC コントローラーを検討してください。

@RequestMapping("/foo")
public Foo get() {
    return new Foo();
}

public class Foo {
    @Getter
    @Setter
    private ZonedDateTime time = ZonedDateTime.now();
}

Foo オブジェクトを Jackson JSR-310 モジュールでシリアライズしたいと考えています。この依存関係はクラスパスにあります:

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
</dependency>

application.properties に jackson の設定もあります。

spring.jackson.serialization.write-dates-as-timestamps=false

ジャクソンのドキュメントによると、ISO日時形式に変換する必要がありますが、まだタイムスタンプ値を取得しています...

{
  time: 1508867114.796
}

ZonedDateTimeSerializer 内で次のことに気付きました。

@Override
public void serialize(ZonedDateTime value, JsonGenerator generator, SerializerProvider provider) throws IOException {
    if (!useTimestamp(provider)) {
        if (shouldWriteWithZoneId(provider)) {
            // write with zone
            generator.writeString(DateTimeFormatter.ISO_ZONED_DATE_TIME.format(value));
            return;
        }
    }
    super.serialize(value, generator, provider);
}

useTimestamp(provider)は に評価されるtrueため、application.properties のプロパティは無視されます。

私のコードで何が間違っている可能性がありますか?

4

1 に答える 1