尝试使用Joda将包含日期字符串的JSON字符串反序列化为POJO时,我收到异常。
我将Jackson2与Spring和Robospice一起使用。
我收到以下异常:
无法读取JSON:无法实例化类型的值[simple type, 来自String值的类org.joda.time.DateTime] (' 2014-07-25T00:00:00&#39);没有单字符串构造函数/工厂方法
这是我目前的代码:
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工作。
答案 0 :(得分:13)
对于Maven用户:当您使用jackson和joda但忘记包含jackson-datatype-joda时会出现此问题。对于本答案(2.6.3)中的最新jackson版本,以下是您必须包含在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>
答案 1 :(得分: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