10

尝试使用 Joda 将包含日期字符串的 JSON 字符串反序列化为 POJO 时出现异常。

我将 Jackson2 与 Spring 和 Robospice 一起使用。

我收到以下异常:

无法读取 JSON:无法从字符串值('2014-07-25T00:00:00')实例化类型 [简单类型,类 org.joda.time.DateTime] 的值;没有单字符串构造函数/工厂方法

这是我目前的代码:

MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter 
                            = new MappingJackson2HttpMessageConverter();

mappingJackson2HttpMessageConverter.getObjectMapper().registerModule(new JodaModule());
msgConverters.add(mappingJackson2HttpMessageConverter);

restTemplate.setMessageConverters(msgConverters);
HttpEntity<?> httpEntity = new HttpEntity<Object>(headers);

final ResponseEntity<HolidayList> responseEntity 
            = restTemplate.exchange(url, HttpMethod.GET, httpEntity,HolidayList.class);

POJO 字段的定义如下:

private DateTime departureDate;

我在Jackson1 有这个工作......但似乎无法让它在Jackson2 工作。

4

2 回答 2

20

对于 Maven 用户:当您使用 jackson 和 joda 但忘记包含 jackson-datatype-joda 时会出现此问题。对于此答案(2.6.3)的最新杰克逊版本,以下是您必须包含在 pom 文件中的依赖项。

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.6.3</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.6.3</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-joda</artifactId>
        <version>2.6.3</version>
    </dependency>
于 2015-11-21T18:59:44.187 回答
8

我相信我的问题只是我在运行其他所有版本的 jackson joda 组件。

最后我在我的 Gradle 文件中做了这个

String jacksonCore = 'com.fasterxml.jackson.core:jackson-core:'
String jacksonAnnotations = 'com.fasterxml.jackson.core:jackson-annotations:'
String jacksonDatabind = 'com.fasterxml.jackson.core:jackson-databind:'
String jacksonJoda='com.fasterxml.jackson.datatype:jackson-datatype-joda:'
String jacksonVersion = '2.4.1'


dependencies {

    compile jacksonCore + jacksonVersion
    compile jacksonAnnotations + jacksonVersion
    compile jacksonDatabind + jacksonVersion
    compile jacksonJoda + jacksonVersion
于 2014-08-11T13:39:56.490 回答