joda examples current jackson jodatime spring-android

examples - Problemas de deserialización con Joda Time/Jackson 2/Spring-No se puede crear una instancia del valor del tipo



joda-time examples (2)

Obtengo una excepción cuando intento deserializar una cadena JSON que contiene cadenas de fechas a un POJO usando Joda.

Estoy usando Jackson2 con Spring y Robospice.

Obtengo la siguiente excepción:

No se pudo leer JSON: no se puede crear una instancia del valor del tipo [tipo simple, clase org.joda.time.DateTime] a partir del valor de cadena (''2014-07-25T00: 00: 00''); no hay un único constructor String / método de fábrica

Aquí está el código que tengo en este momento:

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);

Los campos POJO se definen así:

private DateTime departureDate;

Tenía esto funcionando en Jackson1 ... pero parece que no funciona en Jackson2.


Creo que mi problema era simplemente que estaba ejecutando diferentes versiones del componente jackson joda para todo lo demás.

Al final hice esto en mi archivo 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


Para el usuario de Maven: este problema ocurre cuando estás usando jackson y joda, pero te olvidas de incluir jackson-datatype-joda. Para la última versión de jackson a partir de esta respuesta (2.6.3), a continuación se detallan las dependencias que debe incluir en su archivo 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>