【轉載地址】https://blog.csdn.net/BigBad/article/details/78138547
關於@RequestBody 映射實體類的方法,網上大量討論,不再細說。
但前端提交複雜結構,或動態性比較大的數據結構時,就可能不能映射固定類。用map方式貌似也不太靈(沒有仔細研究,過程中,前端json結構比較複雜時,失敗了)。
前端寫法:
var json_data={
“name” : “demographics”,
“params” : [1 , 2, 3],
“items” : [ {“name” : “中文”, “value” : 10 },
{“name”: “item2”, “value” : 20 }
]
};
$.ajax({
url : ‘chart/graphics’,
type : ‘post’,
data : JSON.stringify(json_data),
contentType : ‘application/json;charset=utf-8’ //中文需要加上charset=utf-8才正確
});
後端寫法
@RequestMapping(value=”/{name}”, method=RequestMethod.POST, produces=”application/json;charset=utf-8;”)
@ResponseBody
public String postDashboardItem(
@PathVariable(value=”name”) String name,
@RequestBody String params,
Model model) {
JSONObject object= JSON.parseObject(params);
//do somthings
return “”; //json string
}
更正:
感謝alan_waker的提醒,重複做了map接收參數的實驗,效果不錯。
前端寫法一樣,
後端寫法:
@RequestMapping(value=”/{name}”, method=RequestMethod.POST, produces=”application/json;charset=utf-8;”)
@ResponseBody
public String postDashboardItem(
@PathVariable(value=”name”) String name,
@RequestBody Map<String, Object> params,
Model model) {
//do somthings return “”; //json string
}
需要引用 jackson-databind包,否則前端會報 415錯誤。後臺報Content type ‘application/json;charset=UTF-8’ not supported。