在Spring中實現後臺對JSON傳的陣列物件給List型別的引數繫結
阿新 • • 發佈:2018-12-19
就是在後臺接收前端傳的JSON串,其中包含陣列型別的資料。例如傳一個user使用者列表,後臺用List來接收。
其實有多種方法都可以實現,大概就是JSON方式,和非JSON的key/value那種方法。但是後臺前輩告訴我,要考慮前臺不是所有都會這兩種傳參的方式,而且用JSON傳總是不容易出錯的。由此寫下來該方法
後臺定義的用來接收使用者型別的vo類/**
* 用來測試JSON傳遞list型的資料vo類
*
*/
public class UserVo {
private List<User> userList;
/**
* @return the userList
*/
public List<User> getUserList() {
return userList;
}
/**
* @param userList the userList to set
*/
public void setUserList(List<User> userList) {
this.userList = userList;
}
}
其中User的定義就不詳舉了,大致包含以下幾個欄位
- name:姓名
- gender:性別
- address:地址
controller
/**
* 測試是否能正確接收到JSON格式的user的list
* @param userVo
* @return
*/
@RequestMapping("/queryUsers.action")
@ResponseBody
public User UserQuery(@RequestBody UserVo userVo,HttpServletRequest request) {
List<User> list = userVo.getUserList();
for(User user:list) {
System.out.println(user);
}
return null;
}
其中使用了@RequestBody註解,來解析JSON串 模擬前臺傳參
function helloworld (){
$.ajax({
type:'post',
url:'${pageContext.request.contextPath}/queryUsers.action',
data:JSON.stringify({"userList":[
{"name":"李四","gender":"女","address":"泵山坡"},
{"name":"張三","gender":"女","address":"呼呼坡"},
{"name":"趙武","gender":"男","address":"落楓坡"},
{"name":"孫柳","gender":"男","address":"破破坡"}]
}),
contentType:"application/json;charset=UTF-8",
success:function(data){
alert(data);
}
});
}
其中要求"userList"
對應Vo的定義好的類變數,name
等對應User的欄位
輸出結果 控制檯輸出
李四 [gender: 女 btd: null address: 泵山坡 ]
張三 [gender: 女 btd: null address: 呼呼坡 ]
趙武 [gender: 男 btd: null address: 落楓坡 ]
孫柳 [gender: 男 btd: null address: 破破坡 ]
重寫了User的toString方法,繫結的結果一目瞭然
當然前端的客戶端,就只是執行了一次空的alert()