web-dev-qa-db-ja.com

スプリングブートを使用したJSON出力の日付形式

RESTアプリケーションを作成するためのスプリングブートに取り組んでいます。そして、私は以下に示すようにDTOを持っています:

public class Subject {

private String uid;
private String number;
private String initials;
private Date dateOfBirth;

そして、Spring-Hateosを使用しており、コントローラーの戻りタイプはResponseEntity<Resources<Resource<Subject>>>です。 「yyyy-mm-dd」形式で日付を表示する必要があります。

37
Pramod

BeanをJSON形式にシリアル化するためにアプリケーションでJackson整数化を使用している場合、Jackson注釈 @ JsonFormat を使用して、日付を指定された形式にフォーマットできます。
日付でyyyy-MM-dd形式に日付が必要な場合、この形式を適用するフィールドの上に@JsonFormatを指定する必要があります。

例えば ​​:

public class Subject {

     private String uid;
     private String number;
     private String initials;

     @JsonFormat(pattern="yyyy-MM-dd")
     private Date dateOfBirth;  

     //Other Code  

}  

ドキュメントから:

プロパティの値をシリアル化する方法の詳細を構成するために使用される注釈。

その他のリファレンスドキュメント

お役に立てれば。

65
Yagnesh Agola

ほとんどの場合、「yyyy-MM-dd」の小さい「m」は分セクションを意味します。

あなたは2つのことをすべきです

  • spring.jackson.serialization.write-dates-as-timestamps:falseapplication.propertiesを追加すると、日付のタイムスタンプへの変換が無効になり、代わりにISO-8601準拠の形式が使用されます

  • dateOfBirthプロパティに@JsonFormat(pattern="yyyy-MM-dd")を使用して、ゲッターメソッドに注釈を付けることにより、フォーマットをカスタマイズできます。

32
Master Slave

Spring Bootバージョン1.2.0.RELEASEから開始して、すべてのクラスapplication.propertiesにデフォルトの日付形式を設定するためにspring.jackson.date-formatに追加できるプロパティがあります。

日付形式の例では、次の行をプロパティファイルに追加します。

spring.jackson.date-format=yyyy-MM-dd

リファレンス https://docs.spring.io/spring-boot/docs/1.2.0.RELEASE/reference/html/common-application-properties.html

8
Daniel Higueras

すべての日付の形式を変更する場合は、Builderカスタマイザーを追加できます。次に、日付をISO 8601に変換するBeanの例を示します。

@Bean
public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
    return new Jackson2ObjectMapperBuilderCustomizer() {
        @Override
        public void customize(Jackson2ObjectMapperBuilder builder) {
            builder.dateFormat(new ISO8601DateFormat());        
        }           
    };
}
3
Willem