ホームページ >Java >&#&チュートリアル >Spring Data JPAでJSONシリアル化のためにZonedDateTimeを効率的にフォーマットする方法は?

Spring Data JPAでJSONシリアル化のためにZonedDateTimeを効率的にフォーマットする方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-20 05:26:09297ブラウズ

How to Efficiently Format ZonedDateTime for JSON Serialization in Spring Data JPA?

Spring Data JPA: JSON シリアル化のための ZonedDateTime のフォーマット

JSON を使用する場合、ZonedDateTime オブジェクトのシリアル化により冗長なデータ転送が発生する可能性があります。この記事では、過剰なデータ転送を軽減するための ZonedDateTime のフォーマットについて説明します。

問題の背景

ZonedDateTime には、日付と時刻に関する広範な情報が含まれています。デフォルトでは、JSON シリアル化は、すべてのコンポーネントを含むかさばる表現を生成します。効率的なデータ転送のためには、ISO 8601 などの簡潔な方法で ZonedDateTime をフォーマットすることが望ましいです。

Jackson の JavaTimeModule を使用した解決策

ZonedDateTime をフォーマットするには、Jackson の JavaTimeModule を利用できます。 JavaTimeモジュール。依存関係をプロジェクトの pom.xml に追加します:

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>2.6.0</version>
</dependency>

モジュールを使用するには、ObjectMapper を作成し、JavaTimeModule を登録します:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());

エンティティ クラスに @JsonFormat アノテーションを追加します。 ZonedDateTime へフィールド:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
private ZonedDateTime lastModifiedDate;

サンプル実装

以下はサンプル エンティティとその JSON 表現です:

public class Entity {
    private ZonedDateTime time = ZonedDateTime.now();

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
    public ZonedDateTime getTime() {
        return time;
    }
}

JSON 出力:

{"time":"2015-07-25T23:09:01.795+0700"}

ジャクソンへのメモ2.4.x ユーザー

Jackson 2.4.x を使用している場合は、objectMapper.registerModule(new JSR310Module()); を使用する必要があります。

上記のソリューションを実装すると、効率的な JSON シリアル化のために ZonedDateTime を効果的にフォーマットでき、不要なデータ転送が削減され、パフォーマンスが向上します。

以上がSpring Data JPAでJSONシリアル化のためにZonedDateTimeを効率的にフォーマットする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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