[英]Marshall @Id to JSON while retaining Java 8 time formatting
我正在嘗試將對象映射到JSON。 這工作正常,但我也想在JSON中公開@Id
。 我已經找到了解決方法,但是要使用該解決方案,我必須擴展RepositoryRestMvcConfiguration
。 當我擴展它時,我的Java 8時間格式正在中斷。 我的JSON如下:
{"name":"erik",birthDate:"2015-01-01"}
birthDate字段是Java 8 LocalDate。 現在,我還嘗試通過擴展RepositoryRestMvcConfiguration
並設置configuration.exposeIdsFor(MyClass.class);
來公開@Id
configuration.exposeIdsFor(MyClass.class);
。 現在我暴露了Id,但是由於擴展了RepositoryRestMvcConfiguration
,我的LocalDate
現在被序列化為:
"birthDate":{"year":2015,"month":"AUGUST","chronology":{"id":"ISO","calendarType":"iso8601"},"dayOfMonth":15,"dayOfWeek":"SATURDAY","era":"CE","dayOfYear":227,"leapYear":false,"monthValue":8}
因此,我的問題是:如何在保留LocalDate
格式的同時公開類的ID?
聽起來您正在解決Spring Boot問題中描述的問題 。 簡而言之,問題在於RepositoryRestMvcConfiguration
子類的存在導致使用Spring MVC的默認JSON轉換器,而不是您配置的默認轉換器。 如問題中所述,可以通過在應用程序的配置中聲明以下bean來解決此問題:
@Bean
public HttpMessageConverters httpMessageConverters(
final Jackson2ObjectMapperBuilder builder,
List<HttpMessageConverter<?>> converters) {
return new HttpMessageConverters(converters) {
@Override
protected List<HttpMessageConverter<?>> postProcessConverters(
List<HttpMessageConverter<?>> converters) {
for (HttpMessageConverter<?> converter : converters) {
if (converter instanceof MappingJackson2HttpMessageConverter) {
builder.configure(((MappingJackson2HttpMessageConverter) converter)
.getObjectMapper());
}
}
return converters;
}
};
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.