在使用springmvc的時候,后臺@RequestBody接受的是一個json格式的字符串,一定是一個字符串。
我們可以通過@RequestBody Map
@RequestMapping(value="/queryAccountList.do",produces="application/json;charset=UTF-8")
@ResponseBody
public HashMap<String, Object> queryAccountList(@RequestBody Map<String, Object> paramsMap){
System.out.println("paramsMap="+paramsMap);
String channel= (String) paramsMap.get("channel");
String function_code=(String) paramsMap.get("function_code");
Map<String, Object> reqParam=(Map<String, Object>)paramsMap.get("data");
當(dāng)前端調(diào)用我們的接口時,傳入json字符串,就轉(zhuǎn)為了map對象。這里主要是@RequestBody的底層實現(xiàn),我們不討論。
json對象和json字符串的區(qū)別:
var person={“name”:”zhangsan”,”sex”:”男”,”age”:”24”}//json對象
var person=’{“name”:”zhangsan”,”sex”:”男”,”age”:”24”}’;//json字符串
json對象轉(zhuǎn)為json字符串,調(diào)用stringify方法:
var person={"name":"zhangsan","sex":"男","age":"24"};//json對象
var personString = JSON.stringify(person);
alert(personString);
SpringMVC接受json字符串類型。
在SpringMVC中基于REST開發(fā)時,前端傳入后臺的應(yīng)該是一個json格式的字符串,而不是一個json對象
GET、POST方式提時, 根據(jù)request header Content-Type的值來判斷:
application/x-www-form-urlencoded, 可選(即非必須,因為這種情況的數(shù)據(jù)@RequestParam, @ModelAttribute也可以處理,當(dāng)然@RequestBody也能處理);
multipart/form-data, 不能處理(即使用@RequestBody不能處理這種格式的數(shù)據(jù));
其他格式, 必須(其他格式包括application/json, application/xml等。這些格式的數(shù)據(jù),必須使用@RequestBody來處理)。
|