項目對外提供接口,但是發現返回值中文亂碼!
原因是外部系統規定調用的接口入參和返回值必須是UTF-8編碼的JSON格式,所以接口定義必須如下處理:
@RequestMapping(value = "/doAAA", method = RequestMethod.POST,headers = "Content-type=application/json;charset=UTF-8",produces = "text/html;charset=utf-8")
@ResponseBody
public String doApproval(@RequestBody MobileApprovalDoAssistParameter doAssistParameter) throws Exception {
log.info("***********receive doAssist json:"+ JSONObject.toJSONString(doAssistParameter));
MobileApprovalResponseDTO mobileApprovalResponseDTO = iMobileApprovalService.doAssist(doAssistParameter);
return JSONObject.toJSONString(mobileApprovalResponseDTO);
}
備註:上面是自己封裝的接口,定義了入參是json格式並且是utf-8編碼,返回值定義了text/html;charset=utf-8 ,因爲自己代碼裏已經手動將對象轉換成了JSON格式字符串,所以直接定義text/html格式就可以,如果方法返回的是一個對象,可以定義成application/json;charset=UTF-8,那麼方法返回時就自動幫我們轉化成json,這個根據自己的實際使用情況,自行處理一下就可以了。
入參是編碼:headers = “Content-type=application/json;charset=UTF-8”
返回值:produces = “text/html;charset=utf-8”