新しい JDK8 Java.time クラスのモジュールを探しています。 FasterXML GitHubプロジェクトリスト を調べましたが、現在のところ何も見つかりませんでした。
私が理解しているように、ジャクソンはまだJDK6に対してコンパイルされているので、これらのクラスを直接使用することはできず、Jodaで必要だったように、これを別個のモジュールとしてビルドする必要があります。
プロジェクトを開始しても構いませんが、他の取り組みがすでに進行中であるかどうかを確認したいと思います。
既に述べたように、 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のJackson "portal"ページから見つけることができます。
https://github.com/FasterXML/jackson
「JSR-310:「Java 8 Dates」のサポートをリストします。ネーミングは少し不透明ですが、JSRを介して標準化プロセスを参照し、新しいJava8 Date APIを生成するためにファイナライズする必要がありますしばらく時間がかかりました)。
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());
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
私の悪い、私は jackson-datatype-jdk7 のようにjackson-datatype-jdk8
を探していましたが、プロジェクトは実際にはJSR名で作成されました jackson-datatype-jsr31 =。
使用できるはずです
ObjectMapper mapper = new ObjectMapper();
mapper.findAndRegisterModules();