1. ホーム
  2. jackson

[解決済み] JDK8 java.time用のjackson datatypeモジュールはありますか?

2022-02-15 11:11:37

質問

のモジュールを探しています。 JDK8 java.time クラスがあります。私は FasterXML GitHub プロジェクト一覧 で、今のところありません。

私の理解では、JacksonはまだJDK6に対してコンパイルされているため、これらのクラスを直接使用することはできず、Jodaで必要だったように、別のモジュールとしてビルドする必要があります。

他の取り組みがすでに行われていないかどうかを確認するためですが、プロジェクトを開始することに抵抗はありません。

どのように解決するのですか?

すでに述べたとおりです。 ジャクソン-データ型-JSR310 は、Java 8 Timeをサポートしています。

Jackson 2.6.0以降、JSR310Moduleは非推奨となりました。これは、JavaTimeModuleに置き換えられます。Mavenの依存関係は同じです(現在のバージョンは、次の場所で見つけることができます)。 メイヴンセントラル ):

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

このように、モジュールを登録する必要があります。

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

あるいはこんな感じ。

ObjectMapper mapper = new ObjectMapper(); 
mapper.findAndRegisterModules();

あるいはこんな感じ(2.10以降可能)。

ObjectMapper mapper = JsonMapper.builder()
        .findAndAddModules()
        .build();

2.6 現在、このモジュールは自動登録をサポートしていません。これは、レガシーバージョンである JSR310Module が存在するためです。レガシーバージョンは同じ機能を持ちますが、デフォルトの設定が若干異なります: com.fasterxml.jackson.datatype.jsr310 を参照してください。 JSR310Module をご覧ください。

JavaTimeModule ソースは、GitHub にあります。

JavaTimeModuleの使用方法