JSONのYYYY-MM-DD T HH:mm:ssのSpringboot2 jackson2のLocalDateTime LOCALDATE DateTimeの日付書式付き


Springboot2 jackson2のLocalDateTime LOCALDATE DateTimeの日付書式付き


理由:データベースは2つのデータフィールドを有することを特徴とする請求使用MyBatisのプラスのLocalDateTimeのデフォルトの日付フォーマットとして生成された逆コードを生成するコードジェネレータは、LocalDateTimeをフィールド内の3つのエンティティがあり、日付フィールドは@JsonFormat(パターン=使用して初期化しません"YYYY-MM-DD HH:MM:SS":MM:SS、タイムゾーンは= "GMT + 08")フィールドデータの日付形式はYYYY-MM-DDTHHなって初期化されません

オリジナル住所

輸入com.fasterxml.jackson.core.JsonGenerator。

輸入com.fasterxml.jackson.core.JsonParser。

輸入com.fasterxml.jackson.databind *。;

輸入com.fasterxml.jackson.datatype.jsr310.JavaTimeModule。

輸入org.apache.commons.lang3.StringUtils。

輸入org.springframework.context.annotation.Bean。

輸入org.springframework.context.annotation.Configuration。

輸入org.springframework.context.annotation.Primary;

輸入org.springframework.core.convert.converter.Converter。

輸入org.springframework.lang.NonNull;

インポートにjava.io.IOException;

輸入java.time.LocalDate。

輸入java.time.LocalDateTime。

輸入java.time.LocalTime。

輸入java.time.format.DateTimeFormatter。

java.util.TimeZoneのインポート;

/ **

* Jackson2日のシリアライズとデシリアライズプロセス

*

* @Author zhaoyang10

* @Create 2018年11月27日

* /

@Configuration

パブリッククラスDateConverterConfig {

    プライベート静的最終てDateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern( "YYYY-MM-DD HH:MM:SS")。

    プライベート静的最終てDateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern( "YYYY-MM-DD")。

    プライベート静的最終てDateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern( "HH:MM:SS")。

    / **

    空の文字列の出力順序の* Jackson2 JSONヌルフィールド

    *

    * @return

    * @Author zhaoyang10

    * /

    @豆

    @Primary

    //@ConditionalOnMissingBean(ObjectMapper.class)

    公共ObjectMapper serializingObjectMapper(){

        ObjectMapper objectMapper =新しいObjectMapper();


        JavaTimeModule javaTimeModule =新しいJavaTimeModule();

        //シリアライズされた日付フォーマット

        javaTimeModule.addSerializer(LocalDateTime.class、新しいLocalDateTimeSerializer());

        javaTimeModule.addSerializer(LocalDate.class、新しいLocalDateSerializer());

        javaTimeModule.addSerializer(LocalTime.class、新しいLocalTimeSerializer());

        //デシリアライズの日付形式

        javaTimeModule.addDeserializer(LocalDateTime.class、新しいLocalDateTimeDeserializer());

        javaTimeModule.addDeserializer(LocalDate.class、新しいLocalDateDeserializer());

        javaTimeModule.addDeserializer(LocalTime.class、新しいLocalTimeDeserializer());

        objectMapper.registerModule(javaTimeModule)。


objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)。

objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)。

        objectMapper.setTimeZone(はTimeZone.getTimeZone( "アジア/上海"));

        objectMapperを返します。

    }

    / **

    *日付のシリアル化

    * /

    パブリッククラスLocalDateTimeSerializerはJsonSerializerを拡張<LocalDateTimeを> {

        @オーバーライド

        公共ボイドシリアライズ(LocalDateTimeを値、JsonGenerator GEN、SerializerProviderシリアライザ)がIOExceptionが{スロー

            gen.writeString(value.format(DATETIME_FORMATTER))。

        }

    }

    / **

    *日付の非直列化されました

    * /

    パブリッククラスLocalDateTimeDeserializerはJsonDeserializerを拡張<LocalDateTimeを> {

        @オーバーライド

        公共のLocalDateTimeのデシリアライズ(JsonParserのP、DeserializationContext CTXT)はIOExceptionが{スロー

            LocalDateTime.parse(p.getValueAsString()、DATETIME_FORMATTER)を返します。

        }

    }

    / **

    *日付のシリアル化

    * /

    パブリッククラスLocalDateSerializerはJsonSerializerを拡張<LOCALDATE> {

        @オーバーライド

        公共ボイドシリアライズ(LOCALDATE値、JsonGenerator GEN、SerializerProviderシリアライザ)がIOExceptionが{スロー

            gen.writeString(value.format(DATE_FORMATTER))。

        }

    }

    / **

    *日付の非直列化されました

    * /

    パブリッククラスLocalDateDeserializerはJsonDeserializerを拡張<LOCALDATE> {

        @オーバーライド

        公共LOCALDATEのデシリアライズ(JsonParserのP、DeserializationContext CTXT)はIOExceptionが{スロー

            LocalDate.parse(p.getValueAsString()、DATE_FORMATTER)を返します。

        }

    }

    / **

    *日付のシリアル化

    * /

    パブリッククラスLocalTimeSerializerはJsonSerializerを拡張<にLocalTime> {

        @オーバーライド

        公共ボイドシリアライズ(にLocalTime値、JsonGenerator GEN、SerializerProviderシリアライザ)がIOExceptionが{スロー

            gen.writeString(value.format(TIME_FORMATTER))。

        }

    }

    / **

    *日付の非直列化されました

    * /

    パブリッククラスLocalTimeDeserializerはJsonDeserializerを拡張<にLocalTime> {

        @オーバーライド

        公的にLocalTimeのデシリアライズ(JsonParserのP、DeserializationContext CTXT)はIOExceptionが{スロー

            LocalTime.parse(p.getValueAsString()、TIME_FORMATTER)を返します。

        }

    }

    / **

    *変換プロセスパラメータ日のフロントエンドを受けます

    *

    * @return

    * /

    @豆

    公共コンバータ<文字列のLocalDateTime> LocalDateTimeConvert(){

        返す新しいコンバータ<文字列、のLocalDateTime>(){

            @オーバーライド

            公共のLocalDateTimeコンバート(@NonNull文字列のソース){

                LocalDateTime日= NULL;

                IF(StringUtils.isNotBlank(ソース)){

                    日付= LocalDateTime.parse(ソース、DATETIME_FORMATTER)。

                }

                日付を返します。

            }

        }。

    }

    @豆

    公共コンバータ<文字列、LOCALDATE> LocalDateConvert(){

        {)(<文字列、LOCALDATE>新しいコンバータを返します

            @オーバーライド

            公共LOCALDATEコンバート(@NonNull文字列のソース){

                LOCALDATE日= NULL;

                IF(StringUtils.isNotBlank(ソース)){

                    日付= LocalDate.parse(ソース、DATE_FORMATTER)。

                }

                日付を返します。

            }

        }。

    }

    @豆

    公共コンバータ<文字列にLocalTime> LocalTimeConvert(){

        返す新しいコンバータ<文字列、にLocalTime>(){

            @オーバーライド

            公的にLocalTimeコンバート(@NonNull文字列のソース){

                LocalTime時間= NULL;

                IF(StringUtils.isNotBlank(ソース)){

                    時間= LocalTime.parse(ソース、TIME_FORMATTER)。

                }

                時間を返します。

            }

        }。

    }

}

おすすめ

転載: blog.csdn.net/weixin_33858336/article/details/91015278