1. 程式人生 > >springMVC接收post請求傳輸json字串、json字串陣列

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>