2017-02-15 2 views
0

У меня есть проект без Spring Boot, но он использует некоторые пружинные модули, такие как «весенние данные» и «весенние данные».Spring Data Rest и сериализация java.time

У меня возникла проблема с сериализацией полей java.time. *. Я нашел некоторые учебники как this, но даже если я добавляю следующую зависимость

<dependency> 
    <groupId>com.fasterxml.jackson.datatype</groupId> 
    <artifactId>jackson-datatype-jsr310</artifactId> 
    <version>${jackson.version}</version> 
</dependency> 

и следующий код в моем RepositoryRestConfigurerAdapter

@Component public class CvlRepositoryRestConfigurerAdapter extends RepositoryRestConfigurerAdapter { 

@Override 
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { 
    config.setDefaultPageSize(75); 
    config.setReturnBodyForPutAndPost(Boolean.TRUE); 
} 

@Override 
public void configureJacksonObjectMapper(ObjectMapper objectMapper) { 
    super.configureJacksonObjectMapper(objectMapper); 
    objectMapper.configure(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS, false); 
} 

}

мой фактический ответ о ява. поле времени выглядит следующим образом:

"rateDate": { " год»: 2017, "месяц": "Февраль", "DayOfMonth": 14, "День недели": "вторник", "Эра": "CE", "DayOfYear": 45, "leapYear" ложь, "monthValue": 2, "хронология": { "идентификатор": "ISO", "calendarType": "ISO8601" }

Что я делаю неправильно? Что я забываю?

ответ

0

это мой адаптер. Теперь он работает

@Component 
public class CvlRepositoryRestConfigurerAdapter extends RepositoryRestConfigurerAdapter { 

@Override 
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { 
    config.setDefaultPageSize(75); 
    config.setReturnBodyForPutAndPost(Boolean.TRUE); 
} 

@Override 
public void configureJacksonObjectMapper(ObjectMapper objectMapper) { 
    super.configureJacksonObjectMapper(objectMapper); 
    objectMapper.configure(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS, false); 
    SimpleModule sm = new SimpleModule("jsr310module"); 
    sm.addSerializer(LocalDate.class,new LocalDateSerializer(DateTimeFormatter.ISO_DATE)); 
    sm.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ISO_DATE)); 
    sm.addSerializer(LocalDateTime.class,new LocalDateTimeSerializer(DateTimeFormatter.ISO_DATE_TIME)); 
    sm.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ISO_DATE_TIME)); 
    objectMapper.registerModule(sm); 
} 

}

нужно только проверить часовой пояс (ZonedDateTime полей) и кодирование (кажется, UTF-8 по умолчанию), и все будет хорошо. Надеемся быть полезными для кого-то еще

Смежные вопросы