Jackson を使用して Java 8 LocalDate オブジェクトを JSON で適切にフォーマットするにはどうすればよいですか?
Dec 30, 2024 am 01:54 AMJackson を使用した Java 8 LocalDate のフォーマット
問題:
Java アプリケーションでの日付の変換@JsonFormat アノテーションを使用すると、オブジェクトを特定の日付パターンを持つ JSON 形式に簡単に変換できます。ただし、Java 8 で導入された java.time.LocalDate を扱う場合、同じアプローチが期待どおりに機能しない可能性があります。
提案された解決策:
の書式設定をカスタマイズするにはJSON シリアル化用の LocalDate オブジェクトの場合、次のアプローチが可能です。使用:
- Jackson ObjectMapper の構成:
- ObjectMapper の ContextResolver 実装を作成します。
- LocalDate をサポートするために ObjectMapper に JavaTimeModule を登録します。シリアル化。
- LocalDate はタイムスタンプなしの日付を表すため、WRITE_DATES_AS_TIMESTAMPS 機能を false に設定します。
- JAX-RS アプリケーションで ContextResolver を使用します:
- @Provider を使用した JAX-RS サービス クラス注釈。
- ObjectMapperContextResolver インターフェイスを実装して、構成された ObjectMapper を提供します。
- JSON 変換用のリソース クラスに注釈を付ける:
- @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 サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?

2025年のトップ4 JavaScriptフレームワーク:React、Angular、Vue、Svelte

高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?

Spring Boot Snakeyaml 2.0 CVE-2022-1471問題修正
