Android 上的 Jackson JSR310
Jackson JSR310 on Android
我正在构建一个 Android 应用程序,它将 JSON 文件从私有存储加载到 class。 class 定义如下:
public class Foo {
public Instant createdAt = Instant.now();
}
我的 gradle.build 中有以下内容:
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.13.2'
implementation 'com.fasterxml.jackson.core:jackson-core:2.13.2'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.2'
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.2'
但是当我尝试将 class 序列化为 JSON 时,我得到:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8
date/time type `java.time.Instant` not supported by default: add
Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to
enable handling
我之前在 Java 中做过无数次(虽然那不是 Android 项目,并且是用 Maven 而不是 Gradle 编译的),我'我们从来没有遇到过问题。这是我第一次尝试将即时日期合并到 Jackson 的 Android 应用程序中。
我错过了什么?
我必须补充:
.registerModule(new JavaTimeModule())
到 ObjectMapper,然后它开始工作。我不确定为什么我必须为 Gradle-based 构建这样做,而我以前从来没有为 Maven-based 构建这样做过。
我正在构建一个 Android 应用程序,它将 JSON 文件从私有存储加载到 class。 class 定义如下:
public class Foo {
public Instant createdAt = Instant.now();
}
我的 gradle.build 中有以下内容:
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.13.2'
implementation 'com.fasterxml.jackson.core:jackson-core:2.13.2'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.2'
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.2'
但是当我尝试将 class 序列化为 JSON 时,我得到:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.Instant` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling
我之前在 Java 中做过无数次(虽然那不是 Android 项目,并且是用 Maven 而不是 Gradle 编译的),我'我们从来没有遇到过问题。这是我第一次尝试将即时日期合并到 Jackson 的 Android 应用程序中。
我错过了什么?
我必须补充:
.registerModule(new JavaTimeModule())
到 ObjectMapper,然后它开始工作。我不确定为什么我必须为 Gradle-based 构建这样做,而我以前从来没有为 Maven-based 构建这样做过。