SpringBoot引用Eureka導致返回結果由json變為xml解決方案
阿新 • • 發佈:2018-12-18
在學習SpringCloud的時候,專案集成了Eureka時,無論使用@RestController還是@Controller + @ResponseBody返回的資料都是xml形式的資料,不是我們想要的json格式的資料,如下圖:
原因
在我的SpringBoot專案中集成了EurekaServer,又需要jackson-dataformat-xml這個依賴
它可以將實體轉換為xml也可以轉換為json,根據發起請求的request頭中Accept來決定,例如下面這個:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
可以看到application/xml在最後匹配json的*/ *前面,優先順序高過json,所以返回了XML
解決方案
在請求的Mapping上加上produces = { “application/json;charset=UTF-8” },例如:
@GetMapping(value = "/user-instance", produces = { "application/json;charset=UTF-8" })
以下是json和xml 定義的方式:
@GetMapping(value = "/user-instance", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@GetMapping(value = "/user-instance", produces = MediaType.APPLICATION_XML_VALUE)
除了在方法上面加入之外,還可以直接在類上面加入