1. ホーム
  2. java

[解決済み] Spring BootでのJSON Java 8 LocalDateTimeフォーマット

2022-06-01 07:28:31

質問

Spring BootアプリケーションでJava 8のLocalDateTimeをフォーマットする際に、ちょっとした問題が発生しました。通常の」日付では問題はないのですが、LocalDateTimeフィールドは次のように変換されます。

"startDate" : {
    "year" : 2010,
    "month" : "JANUARY",
    "dayOfMonth" : 1,
    "dayOfWeek" : "FRIDAY",
    "dayOfYear" : 1,
    "monthValue" : 1,
    "hour" : 2,
    "minute" : 2,
    "second" : 0,
    "nano" : 0,
    "chronology" : {
      "id" : "ISO",
      "calendarType" : "iso8601"
    }
  }

などに変換したいところですが。

"startDate": "2015-01-01"

私のコードはこのような感じです。

@JsonFormat(pattern="yyyy-MM-dd")
@DateTimeFormat(iso = DateTimeFormat.ISO.TIME)
public LocalDateTime getStartDate() {
    return startDate;
}

しかし、上記の注釈のいずれかが動作しません、日付は上記のようにフォーマットされ続けます。提案を歓迎します。

どのように解決するのですか?

更新 : Spring Boot 2.xではこの設定が不要になりました。私が書いた を書きましたが、より最新の回答はこちら .


(これはSpring Boot 2.x以前のやり方です。古いバージョンのSpring Bootで作業している人には便利かもしれません)

やっと見つけた を見つけました。 を実行する方法を見つけました。それを修正するために、私は別の依存関係を必要としました。

compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.4.0")

この依存関係を含めることで、Springは自動的にそのためのコンバータを登録し、説明されているように ここで . その後、application.propertiesに以下を追加する必要があります。

spring.jackson.serialization.write_dates_as_timestamps=false

これにより、正しいコンバータが使用され、日付が 2016-03-16T13:56:39.492

アノテーションは、日付のフォーマットを変更したい場合にのみ必要です。