簡體   English   中英

將Marshall @Id轉換為JSON,同時保留Java 8時間格式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM