Spring Data Rest和java.time序列化

时间:2017-02-15 20:06:45

标签: spring-data

我是一个没有Spring Boot的项目,但它使用了一些弹簧模块,例如"弹簧数据"和#34;弹簧数据休息"。

我对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);
}

}

关于java.time字段的实际响应类似于以下

&#34; rateDate&#34; :{         &#34;一年&#34; :2017年,         &#34;一个月&#34; :&#34; FEBRUARY&#34;,         &#34;请将dayOfMonth&#34; :14,         &#34;一周中的某天&#34; :&#34;星期二&#34;,         &#34;时代&#34; :&#34; CE&#34;,         &#34; DAYOFYEAR&#34; :45,         &#34; leapYear&#34; :假的,         &#34; monthValue&#34; :2,         &#34;年表&#34; :{           &#34; ID&#34; :&#34; ISO&#34;,           &#34; calendarType&#34; :&#34; iso8601&#34;         }

我做错了什么?我忘了什么?

1 个答案:

答案 0 :(得分: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是默认值),一切都会好的。 希望对别人有用