Spring Boot Rest API的格式:json vs xml
可能大家都知道,在Spring Boot的Restful API中,預設的Http返回資料格式為json。其基本原理是,當API返回物件或物件陣列時,需對其進行serialize,此時預設會選擇 MappingJackson2HttpMessageConverter
[圖片上傳失敗...(image-cf6741-1553933859386)]

image.png
有時專案會引入jackson的另一個序列化/反序列化依賴包:jackson-dataformat-xml,以便使用xml序列化與反序列化的一些功能。但此時該專案的Restful API將返回xml格式的http輸出,而非json格式。如果前端專案基於http/json,勢必會造成問題。如何解決這個問題?
在查閱一些資料之後,發現可以在Spring Boot專案中對HttpMessageConverter進行配置,指定使用的http返回格式。
在專案中新增一個WebConfig.java類,繼承WebMvcConfigurerAdapter類,具體程式碼如下:
@Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(new **MappingJackson2HttpMessageConverter**()); } }
注意需給該類加上@Configuration及@EnableWebMvc的annotation。
此處,如果希望對返回物件進行一些個性化的配置,可以新增一個返回bean - Jackson2ObjectMapperBuilder的方法。具體程式碼如下:
@Bean public Jackson2ObjectMapperBuilder objectMapperBuilder(){ Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder(); builder.serializationInclusion(JsonInclude.Include.NON_NULL); // 僅包含非NULL屬性 return builder; }
注意需給該方法加上@Bean的annotation。