SpringBoot解決返回體content-type非json
最佳解決方案為自定義訊息轉換器。
首先,為什麼要自定義訊息轉換器?所見即所得,原本的訊息轉換器並不能滿足我們目前的需求。
在最近的專案中,使用了SpringBoot與FastJson構建專案,在我們返回時,使用 @ResponseBody
的方法裡,採用了fastjson裡的JSON.toJSONString()
方法返回我們需要的Json資料,而這種返回中,會有一個問題,在返回中@ResponseBody
註解中的訊息轉換器會預設理解為String解析,在返回體中如下圖,content-type
為text/html
。
因此我們解決想讓我們的返回體中content-type
為application/json
。
針對於這個問題,有一種最暴力的解決方案,直接在@RequestMapping
中新增produces
屬性,設定produces="application/json"
直接使得返回體設定為json格式。
當然對於這種每個介面暴力解決的方案來說,對於每寫一個介面都需要設定,因此增加我們寫程式碼的重複性工作,因此需要一個一勞永逸的方式。
在@ResponseBody
裡預設有訊息轉換器,一般json轉換使用的是JackJson進行轉換的,而我們在專案中配置使用fastjson,因此需要修改訊息轉化器。
首先訊息轉化器中不只有json轉換器,還有字元轉換器等。
在我們的專案中可以自定義一個配置類,標註有@Configuration
或者在@SpringBootApplication
的啟動配置類中新增下面程式碼,就增加了fastjson的訊息轉換器注入。
/** * fastjson訊息轉換器 * @return */@Beanpublic HttpMessageConverters httpMessageConverters() { FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter(); //新增fastJson的配置資訊 FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); //處理中文亂碼問題 ListfastMediaTypes = new ArrayList(); fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8); //在convert中新增配置資訊. fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes); fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig); HttpMessageConverter> converter = fastJsonHttpMessageConverter; return new HttpMessageConverters(converter); }
當然需要注意,這種配置的方式必須在fastjson 1.2.44
版本及之後才支援。在我們使用Maven構建專案是,需要新增fastjson的依賴。
com.alibaba fastjson 1.2.44
使用這種配置後,可以在返回中去掉我們的json轉化,並直接返回我們需要轉化的實體,在訊息轉換器中會自動呼叫fastjson進行轉json。
解決後結果
作者:小濁微清
連結:】
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2144/viewspace-2810632/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 修改Nginx配置返回指定content-type的方法詳解Nginx
- Java介面返回JSON排序無需的問題解決JavaJSON排序
- springboot+mybatis實現登入功能,返回jsonSpring BootMyBatisJSON
- spring boot 解決後臺返回 json 到前臺中文亂碼之後出現返回json資料包錯Spring BootJSON
- 如何優雅的使用springboot返回下劃線格式JsonSpring BootJSON
- C# 解決httplistener querystring 中文亂碼、返回json中文格式亂碼C#HTTPJSON
- 關於使用中介軟體實現返回 JSONJSON
- 輸出 JSON 資料時的 Content-TypeJSON
- Spring MVC3返回JSON資料中文亂碼問題解決(轉)SpringMVCJSON
- 介面返回[object,Object]解決方法Object
- SpringBoot 解決打包釋出後讀取不到 json 檔案問題Spring BootJSON
- 返回hash 型別的json型別JSON
- 讓Solr返回JSON資料SolrJSON
- 解決spring boot中rest介面404,500等錯誤返回統一的json格式Spring BootRESTJSON
- fastjson 返回json字串,JSON.parse 報錯ASTJSON字串
- JSON.parse()出錯解決JSON
- 格式化 curl 返回的 jsonJSON
- php json_decode返回nullPHPJSONNull
- springboot返回結果包裝統一返回格式Spring Boot
- jmeter 樹結構返回亂碼解決JMeter
- Laravel 靈活使用 中介軟體, 自定義全域性 API JSON 返回格式LaravelAPIJSON
- VS 返回值被忽略的解決方法
- ping返回Source quench received解決辦法
- 設定正確的Content-Type以解決Ext的中文亂碼問題
- Maven json包找不到解決辦法MavenJSON
- JSON.parse () 的非嚴格模式JSON模式
- 如何取出 API 呼叫返回的 JSON 資料APIJSON
- 後端 API 一定要返回 JSON 嗎?後端APIJSON
- SpringMVC 使用@ResponseBody返回json 中文亂碼SpringMVCJSON
- Java http協議呼叫介面返回json字串JavaHTTP協議JSON字串
- struts2.1.8.1+jquery1.4.2返回json資料jQueryJSON
- springboot 解決跨域 Access to XMLHttpRequest atSpring Boot跨域XMLHTTP
- SpringBoot2.1版本的個人應用開發框架 - 實現基礎controller、service、前端封裝返回json體等Spring Boot框架Controller前端封裝JSON
- php json提交亂碼的解決辦法PHPJSON
- expect ':' at 0, actual = (JSON轉化異常解決)JSON
- ClassNotFoundException: org.json.JSONObject解決辦法ExceptionJSONObject
- 解析JSON出現亂碼的解決方法JSON
- PHP JSON_decode 返回為 null 問題PHPJSONNull