场景:前端 json 数据请求到后端的时候,可以用@RequstBody来映射成相应的实体类,但是如果json格式太过复杂,而且我们不需要全部的数据,这时候我们就可以 后端 获取 请求的 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才正确
});
如果想在后端拿到请求的 json 字符串,可以这么写
@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
}
如果想在后端拿到 请求 json 的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
}