2015-02-25 4 views
0

Согласно документации, найденной здесь https://github.com/FasterXML/jackson-datatype-jodaсериализации и десериализации из JodaTime датирована JSon

следующий фрагмент кода должен пройти

ObjectMapper mapper = new ObjectMapper(); 
mapper.registerModule(new JodaModule()); 

final String INPUT_JSON = "{\"start\" : \"1972-12-28T12:00:01.000Z\"}"; 
Bean bean = mapper.readValue(INPUT_JSON, Bean.class); 
String json = mapper.writeValueAsString(bean); 
Assert.assertEquals(INPUT_JSON, json); 

Однако это вместо возвращает:

org.junit.ComparisonFailure: 
Expected :{"start" : "1972-12-28T12:00:01.000Z"} 
Actual :{"start":94392001000} 

Вот файл pom, который я использую:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>test</groupId> 
    <artifactId>test</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <dependencies> 
     <dependency> 
      <groupId>joda-time</groupId> 
      <artifactId>joda-time</artifactId> 
      <version>2.7</version> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.datatype</groupId> 
      <artifactId>jackson-datatype-joda</artifactId> 
      <version>2.4.0</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.12</version> 
     </dependency> 
    </dependencies> 

</project> 

Почему объект datetime не сериализуется правильно?

+0

Я думаю, вы определяете класс Bean: 'public class Bean { public DateTime start; } '. Не так ли? –

+0

Да, я, кажется, нашел проблему. Документация не указывает, что для параметра WRITE_DATES_AS_TIMESTAMPS должно быть установлено значение false. по умолчанию установлено значение true. – netbrain

+0

Рад, что вы его нашли. Вы можете принять свой собственный ответ! –

ответ

1

Тест, похоже, отсутствует в этой функции.

mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS ,false);