私はマルチモジュールのMavenベースのSpring起動アプリケーションを持っています。私のモジュールのapplication.properties
ファイルでは、ではなく、にタイムスタンプ(配列)として日付をシリアル化しているため、常に文字列としてシリアル化されます(フォールバックの動作)。このプロパティは次のとおりです。Springブート:Jacksonは "application.properties"から設定を取得しません
spring.jackson.serialization.write_dates_as_timestamps=false
問題は...プロパティは、Spring Boot/Jacksonのいずれかによって取得されていないようです。シリアル化しようとしているjava.time.LocalDate
のインスタンスは、タイムスタンプとして常に書き込まれます。私は(ジャクソン自身のJavaTimeModuleから)LocalDateSerializer.serialize(...)
メソッド内のコードをチェックし、これを発見した:
@Override
public void serialize(LocalDate date, JsonGenerator generator, SerializerProvider provider) throws IOException
{
if (useTimestamp(provider)) { // This always returns true
generator.writeStartArray();
generator.writeNumber(date.getYear());
generator.writeNumber(date.getMonthValue());
generator.writeNumber(date.getDayOfMonth());
generator.writeEndArray();
} else {
String str = (_formatter == null) ? date.toString() : date.format(_formatter);
generator.writeString(str);
}
}
useTimestamp()
方法は、常に関係なく、私の設定が何であるかを、trueを返すありません。 :(
WebMvcConfigurerAdapterを拡張する必要がありますか? – Enrique
私は通常、上記の例で示したようにしました。 'ObjectMapper'の動作をより詳細に制御します。 –
カスタム 'HttpMessageConverter'を作成すると、設定しようとしていた' RestTemplate'インスタンスに明示的にそれを注入しなければならないことに気がつきました。私は自分の発見を詳述する答えを加えました。 :) – Enrique