Согласно http://wiki.fasterxml.com/JacksonFAQDateHandling, "DateTime может быть автоматически сериализованным/десериализованным, подобно java.util. Дата обрабатывается." Однако я не могу выполнить эту автоматическую функциональность. Существуют обсуждения StackOverflow, связанные с этой темой, но в большинстве случаев это решение на основе кода, но, основываясь на приведенной выше цитате, я должен выполнить это через простую конфигурацию.
Per http://wiki.fasterxml.com/JacksonFAQDateHandling У меня установлен мой набор конфигурации, так что даты записи как метки времени являются ложными. В результате типы java.util.Date сериализуются в формате ISO 8601, но типы org.joda.time.DateTime сериализуются в представлении длинного объекта.
Моя среда такова:
Джексон 2.1
Время Джоды 2.1
Spring 3.2
Java 1.6
Конфигурация my Spring для jsonMapper bean
@Bean
public ObjectMapper jsonMapper() {
ObjectMapper objectMapper = new ObjectMapper();
//Fully qualified path shows I am using latest enum
ObjectMapper.configure(com.fasterxml.jackson.databind.SerializationFeature.
WRITE_DATES_AS_TIMESTAMPS , false);
return objectMapper;
}
Мой фрагмент кода проверки - это
Date d = new Date();
DateTime dt = new DateTime(d); //Joda time
Map<String, Object> link = new LinkedHashMap<String, Object>();
link.put("date", d);
link.put("createdDateTime", dt);
Полученный фрагмент вывода JSON:
{"date":"2012-12-24T21:20:47.668+0000"}
{"createdDateTime": {"year":2012,"dayOfMonth":24,"dayOfWeek":1,"era":1,"dayOfYear":359,"centuryOfEra":20,"yearOfEra":2012,"yearOfCentury":12,"weekyear":2012,"monthOfYear":12 *... remainder snipped for brevity*}}
Мое ожидание заключается в том, что объект DateTime должен соответствовать объекту Date на основе конфигурации. Что я делаю неправильно, или что я недопонимаю? Я читаю слишком много слова автоматически из документации Джексона и тот факт, что строковое представление было подготовлено, хотя и не ISO 8601, создает рекламируемую автоматическую функциональность?