Mar*_*tin 5 java jodatime jackson
我想使用杰克逊将包含日期的json字符串转换为jodaTime的DateTime。不幸的是我得到这个错误
java.lang.NoSuchFieldError: ADJUST_DATES_TO_CONTEXT_TIME_ZONE
Run Code Online (Sandbox Code Playgroud)
json对象如下所示:
{
"add_time": "2017-04-26 14:26:58",
}
Run Code Online (Sandbox Code Playgroud)
我在pom.xml中包含了乔达时间和杰克逊,如下所示:
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
<version>${jackson.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
杰克逊版本为2.8.8。我以这种方式创建了对象映射器:
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JodaModule());
Run Code Online (Sandbox Code Playgroud)
有人知道问题可能在哪里吗?我已经坚持了几个小时。我也试过禁用,DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE但无济于事。
您需要指定一种自定义日期时间格式,因为 JSON 中的格式不是 Jackson 所期望的格式。您可以通过@JsonFormat字段或 setter 方法上的注释轻松完成此操作(无需禁用ADJUST_DATES_TO_CONTEXT_TIME_ZONE)。例如
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
DateTime addTime;
Run Code Online (Sandbox Code Playgroud)
您的示例中的日期将被解析为2017-04-26T14:26:58.000Z. 顺便说一句,这是杰克逊期望的默认格式。
如果您不想添加注释,您可以考虑自定义反序列化器,但这更复杂。
| 归档时间: |
|
| 查看次数: |
1688 次 |
| 最近记录: |