springMVC接收post請求傳輸json字串、json字串陣列
最近做的一個小專案中,前端ajax呼叫後臺API,post請求傳遞用json封裝好的資料物件、資料物件陣列,發現springMVC的@RequestBody註解可以解決這個問題,程式碼如下:
前端:
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script
type="text/javascript"
src="http://code.jquery.com/jquery-1.4.1.js"></script>
<script type="text/javascript">
function testSpringParam(){
var receive_address=$("#receive_address").val();
var user_id=$("#user_id").val();
$.ajax({
type: 'POST',
url: 'http://localhost:8080/address/add',
dataType: 'text',
contentType:'application/json;charset=UTF-8',
data:JSON.stringify({'receive_address':receive_address,'user_user_id':user_id}), //提交json字串陣列,如果提交json字串去掉[]
success:function(data){
alert(data);
},
error:function(textStatus, errorThrown){
console.log(textStatus);
alert(textStatus);
}
});
}
</script>
</head>
<body>
<form action="" id="f1" name="f1">
<input name="receive_address" id="receive_address" type="text" value="福中集團"><br>
<input name="user_id" id="user_id" type="text" value="2"><br><br>
<a href="#" onclick="testSpringParam();">測試</a>
</form>
</body>
</html>
後端:
@RequestMapping(value = "/address/add", method = RequestMethod.POST)
@ResponseBody
public JSONObject addAdde(@RequestBody String param) {
// 建立一個JSONObject物件,返回資料ResponseBody用JSONObject jsonObject = new JSONObject();
// 將RequestBody中的json資料轉化為陣列(長度為1,如果長度大於1,請用for迴圈遍歷)
// JSONArray array = JSONArray.parseArray(param);
//
// // 根據key獲取對應的值
// String receive_address = ((JSONObject) array.get(0))
// .getString("receive_address");
//
// String user_user_id = ((JSONObject) array.get(0))
// .getString("user_user_id");
// 將RequestBody中的json字串轉化為json物件
JSONObject jo = JSONObject.parseObject(param);
// 根據key獲取json物件中對應的值
String receive_address = jo
.getString("receive_address");
String user_user_id = jo.getString("user_user_id");
// 新建一個Address物件
Address addr = new Address();
addr.setReceive_address(receive_address);
addr.setUser_user_id(Integer.parseInt(user_user_id));
// 呼叫addressService的addAddr方法,新增一條收貨地址記錄
try {
addressService.addAddr(addr);
jsonObject.put("code", 0);
jsonObject.put("data", addr);
} catch (Exception e) {
jsonObject.put("code", 1);
jsonObject.put("data", null);
}
return jsonObject;
}
pom.xml新增依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.41</version>
</dependency>