ホームページ > Java > &#&チュートリアル > Java で Jackson を使用して LocalDate をシリアル化および逆シリアル化する方法は?

Java で Jackson を使用して LocalDate をシリアル化および逆シリアル化する方法は?

DDD
リリース: 2024-12-18 15:18:10
オリジナル
244 人が閲覧しました

How to Serialize and Deserialize LocalDate with Jackson in Java?

Jackson による LocalDate シリアル化

Java 8 の LocalDate フィールドと JSON シリアル化を使用する場合、標準の Java 8 アノテーションが常に十分であるとは限りません。これに対処するために、Jackson のモジュールと ContextResolver を使用したカスタム ソリューションが紹介されています。

Jackson は、Java 8 の日付と時刻型のシリアル化と逆シリアル化を処理するための JSR310Module (現在は JavaTimeModule に置き換えられています) を提供しています。これを利用するには、次の手順に従います。

  1. 依存関係をプロジェクトに追加します。

    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
        <version>2.4.0</version>
    </dependency>
    ログイン後にコピー
  2. ContextResolver を作成して、ObjectMapper を構成します。 LocalDate およびその他の Java 8 日付と時刻の処理タイプ:

    @Provider
    public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> {
    
        private final ObjectMapper MAPPER;
    
        public ObjectMapperContextResolver() {
            MAPPER = new ObjectMapper();
            MAPPER.registerModule(new JavaTimeModule());
            MAPPER.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        }
    
        @Override
        public ObjectMapper getContext(Class<?> type) {
            return MAPPER;
        }
    
    }
    ログイン後にコピー
  3. リソース クラスで ContextResolver を使用して、エンドポイントの ObjectMapper をカスタマイズします:

    @Path("person")
    public class LocalDateResource {
    
        @GET
        @Produces(MediaType.APPLICATION_JSON)
        public Response getPerson() {
            Person person = new Person();
            person.birthDate = LocalDate.now();
            return Response.ok(person).build();
        }
    
        @POST
        @Consumes(MediaType.APPLICATION_JSON)
        public Response createPerson(Person person) {
            return Response.ok(
                    DateTimeFormatter.ISO_DATE.format(person.birthDate)).build();
        }
    
        public static class Person {
            public LocalDate birthDate;
        }
    }
    ログイン後にコピー

このアプローチでは, JSON 処理に Jackson を使用すると、LocalDate フィールドは適切にシリアル化および逆シリアル化されます。このソリューションでは、write-date-as-timestamp を false に設定することで、日付がタイムスタンプとしてシリアル化されないようにする要件にも対応しています。

注: JSR310Module は、Jackson バージョン 2.7 以降では非推奨になりました。 。代わりに、同じ依存関係の一部である JavaTimeModule を使用することをお勧めします。

以上がJava で Jackson を使用して LocalDate をシリアル化および逆シリアル化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート