ホームページ >Java >&#&チュートリアル >Jackson を使用して Java 8 LocalDate オブジェクトを JSON で適切にフォーマットするにはどうすればよいですか?

Jackson を使用して Java 8 LocalDate オブジェクトを JSON で適切にフォーマットするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-30 01:54:08344ブラウズ

How to Properly Format Java 8 LocalDate Objects in JSON using Jackson?

Jackson を使用した Java 8 LocalDate のフォーマット

問題:

Java アプリケーションでの日付の変換@JsonFormat アノテーションを使用すると、オブジェクトを特定の日付パターンを持つ JSON 形式に簡単に変換できます。ただし、Java 8 で導入された java.time.LocalDate を扱う場合、同じアプローチが期待どおりに機能しない可能性があります。

提案された解決策:

の書式設定をカスタマイズするにはJSON シリアル化用の LocalDate オブジェクトの場合、次のアプローチが可能です。使用:

  1. Jackson ObjectMapper の構成:
  2. ObjectMapper の ContextResolver 実装を作成します。
  3. LocalDate をサポートするために ObjectMapper に JavaTimeModule を登録します。シリアル化。
  4. LocalDate はタイムスタンプなしの日付を表すため、WRITE_DATES_AS_TIMESTAMPS 機能を false に設定します。
  5. JAX-RS アプリケーションで ContextResolver を使用します:
  6. @Provider を使用した JAX-RS サービス クラス注釈。
  7. ObjectMapperContextResolver インターフェイスを実装して、構成された ObjectMapper を提供します。
  8. JSON 変換用のリソース クラスに注釈を付ける:
  9. @JsonDeserialize と @JsonSerialize を追加します。適切なデシリアライザーとシリアライザーを使用したアノテーションLocalDate 変換を処理するクラス。

コード例:

ContextResolver:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;

@Provider
public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> {
    @Override
    public ObjectMapper getContext(Class<?> type) {
        ObjectMapper mapper = new ObjectMapper();
        mapper.registerModule(new JavaTimeModule());
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        return mapper;
    }
}

リソースクラス:

import java.time.LocalDate;

@Path("person")
public class LocalDateResource {
    @GET
    public Person getPerson() {
        return new Person(LocalDate.now());
    }
}

パーソン クラス:

public class Person {
    @JsonDeserialize(using = LocalDateDeserializer.class)
    @JsonSerialize(using = LocalDateSerializer.class)
    private LocalDate birthDate;
}

このアプローチを実装すると、LocalDate オブジェクトを効果的にシリアル化および逆シリアル化でき、柔軟な JSON フォーマットが可能になります。 .

以上がJackson を使用して Java 8 LocalDate オブジェクトを JSON で適切にフォーマットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。