私は既存のすべてのリポジトリをJoda TimeからJava 8に変換する作業を任されています。道。最初はDynamoDBがJava 8を本質的にサポートしていないので、Webからの助けを借りてZonedDateTime用のカスタムコンバータを作った。結果は次のとおりです。既存のGradle Libsの依存関係をZonedDateTimeにマージし、ジャクソン2.8.5とDynamoDBをSpringプロジェクトで更新する
static public class ZonedDateTimeConverter implements DynamoDBTypeConverter<String, ZonedDateTime> {
@Override
public String convert(final ZonedDateTime time) {
return time.toString();
}
@Override
public ZonedDateTime unconvert(final String stringValue) {
return ZonedDateTime.parse(stringValue);
}
}
これは、ZonedDateTimeからStringへのマーシャルとDynamoDBへの戻りを処理します。しかし、私の最後の問題は、ZonedDateTimeからSpring/Jackson依存関係注入のためのStringへのマーシャリングである(私は信じている。
今私はjackson-datatype-jsr310
hereが必要なことを行うには、Stackoverflowによると。しかし、そのページでそれは私がZonedDateTimeたちはジャクソン2.5.0 jackson: 'com.fasterxml.jackson.core:jackson-databind:2.5.0',
を使用しているので、それはちょうどそれを更新する必要が理にかなっていることを私が見ることができるlibs.gradle
で今Jackson 2.8.5
でマーシャリングできるようにする必要があり、すべての言いましたか?
だから私は今、jackson: 'com.fasterxml.jackson.core:jackson-databind:2.8.5',
を言って、私はbuild.gradle
ファイルのコンパイルセクションにlibs.jackson
を追加しましたlibs.gradle
を更新:compile(libs.jackson)
しかし構築するとき、私はまだcom.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of java.time.ZonedDateTime: no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?)
を受けます。
私もext.libs
定義にジャクソンコアとジャクソンのデータバインドを追加しようとしました:
jacksonCore: 'com.fasterxml.jackson.core:jackson-core:2.8.5',
jacksonBind: 'com.fasterxml.jackson.core:jackson-databind:2.8.5',
とbuild.gradle
:
libs.jacksonCore,
libs.jacksonBind
まだサイコロ。何が起きているのか?
ジャージーとジャクソンを使用していると仮定します。フィールドのコンストラクタに "@JsonCreate"と "@JsonProperty"を付けるか、gettersとsetterを使ってデフォルトのコンストラクタを実装してください。 –
@RamandeepNanda注釈は必要ありません。新しいバージョンのJacksonは、新しいZonedDateTimeやLocalDateTimeなどのJava 8要素をネイティブにサポートする必要があります。例えばhttps://github.com/FasterXML/jackson-datatype-jsr310/blob/master/src/main/java/com/fasterxml/jackson/datatype/jsr310/ser/ZonedDateTimeSerializer.javaに組み込まれています。 – anon58192932
ライブラリを更新したときに、アノテーションのインポートをcom.fasterxmlに更新しましたか?あなたがgradleを使用している場合は、ツリーを表示するためにアプリケーションの依存関係を変更することができます。 –