web-dev-qa-db-ja.com

JDK8 Java.time用のjacksonデータ型モジュールはありますか?

新しい JDK8 Java.time クラスのモジュールを探しています。 FasterXML GitHubプロジェクトリスト を調べましたが、現在のところ何も見つかりませんでした。

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

プロジェクトを開始しても構いませんが、他の取り組みがすでに進行中であるかどうかを確認したいと思います。

27
Brett Ryan

既に述べたように、 Jackson-Datatype-JSR31 は、Java 8 Time。

Jackson 2.6.0以降、「古い」JSR310Moduleは非推奨になりました。 JavaTimeModuleに置き換えられました。 Mavenの依存関係は同じです(現在のバージョンは Maven Central にあります)。

<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());

2.6の時点で、このモジュールはレガシバージョンJSR310Moduleが存在するため、自動登録をサポートしていません。レガシーバージョンの機能は同じですが、デフォルト設定がわずかに異なります。詳細については、com.fasterxml.jackson.datatype.jsr310 . JSR310Module を参照してください。

GitHubのJavaTimeModuleソース

JavaTimeModule Usage

62
PhilippS

データタイプモジュールの最も完全なリストは、GithubのJackson "portal"ページから見つけることができます。

https://github.com/FasterXML/jackson

「JSR-310:「Java 8 Dates」のサポートをリストします。ネーミングは少し不透明ですが、JSRを介して標準化プロセスを参照し、新しいJava8 Date APIを生成するためにファイナライズする必要がありますしばらく時間がかかりました)。

直接リンク: https://github.com/FasterXML/jackson-datatype-jsr31

14
StaxMan

jsr310モジュール をインポートするだけです。

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

モジュール自動スキャン がプロジェクトで有効になっていない場合は、登録する必要があります。

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JSR310Module());
4
Jonas Flesch

Spring Boot 2を使用し、spring-boot-starter-webスターターに依存している場合、依存関係として、非推奨(jackson-datatype-jsr310)と実際(jackson-datatype-jdk8)の両方があります。

[INFO] +-org.springframework.boot:spring-boot-starter-web:jar:2.0.0.M3:compile 
 [INFO] | +-org.springframework.boot:spring-boot-starter-json:jar:2.0.0.M3:compile 
 [INFO] | | +-com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.0.pr4:compile 
 [INFO] | | +-com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.0.pr4:compile 
2
davidxxx

私の悪い、私は jackson-datatype-jdk7 のようにjackson-datatype-jdk8を探していましたが、プロジェクトは実際にはJSR名で作成されました jackson-datatype-jsr31 =。

2
Brett Ryan

使用できるはずです

ObjectMapper mapper = new ObjectMapper();
mapper.findAndRegisterModules();
0
Kalpesh Soni