SpringBoot后端接收數(shù)組對象的實現(xiàn)
SpringBoot后端接收數(shù)組對象
前端代碼
var Params = {
? type: "typeA",
? title: "titleA",
? authors: [{name:"upxuan", age:"18"}, {name:"susen", age:"18"}]
}
console.log(Params)
this.$ajax({
? url: '/api/manualAdd',
? method: 'post',
? contentType: "application/json; charset=utf-8",
? dataType: "json",
? data: Params
}).then( res => {
? console.log(res)
})后端代碼
@RequestMapping("/manualAdd")
@ResponseBody
public String AddManualJpaper (@RequestBody RequestManualAddData data) {
?? ?System.out.println("User:" + data.getType() + "," + data.getTitle());
?? ?System.out.println("Authors:" + data.getAuthors().get(0).getName() + "," + data.getAuthors().get(0).getAge());
? ? return "Get it";
}接收的數(shù)據(jù)對象類
private String type;
private String title;
private List<AuthorsModel> authors;
?
public String getType() {
?? ?return type;
}
?
public void setType(String type) {
?? ?this.type = type;
}
?
public String getTitle() {
?? ?return title;
}
?
public void setTitle(String title) {
?? ?this.title = title;
}
public List<AuthorsModel> getAuthors() {
?? ?return authors;
}
?
public void setAuthors(List<AuthorsModel> authors) {
?? ?this.authors = authors;
}
model
private String name;
private int age;
public String getName() {
?? ?return name;
}
?
public void setName(String name) {
?? ?this.name = name;
}
public int getAge() {
?? ?return age;
}
?
public void setAge(int age) {
?? ?this.age = age;
}后端List接收數(shù)組報400或收不到參數(shù)值
遇到一個關(guān)于前端傳數(shù)組到后端時因為無法接收參數(shù)報400或者接收不到參數(shù)值的問題:
在springboot項目中經(jīng)常會用 @RequestBody 或者 @RequestParam在接口中接收參數(shù),我們都知道:
@RequestBody用于接收json格式的對象數(shù)據(jù),像自定義User實體類對象,Map,List等@RequestParam用于接收單個的屬性


像上面的用對象或者單個屬性去接收前端傳來的參數(shù),還是能很愉快的接收的,但是有一種類型的就比較容易讓人極度不適了,那就是數(shù)組和集合類型的參數(shù)
這里我說一個集合類型的參數(shù),數(shù)組大致一樣:

如上圖接收一個List集合,不管是用 @RequestBody還是用 @RequestParam接收都沒有成功,不是報400就是參數(shù)值為null,然后就去百度瘋狂的逛了幾條芥,
還是沒有找到一個有效的辦法,最后索性自己研究,終于把問題給解決了。
說下我的解決方法
首相從postman工具我們可以看到j(luò)son有兩種格式一種是 { } 還有一種是 [ ] ,{}傳對象,[]傳數(shù)組,這個和前端的傳參方式是對應(yīng)的,所以前端在傳參數(shù)到后端時
就不能用{}而要用[]否則就會報400的錯誤,如下
var params = ["aaaa", "bbbb", "ccccc"];
屬性名可以自定義不影響后端接收,后端用 @RequestBody和 @RequestParam都能接收,至此問題就解決了,希望對大家有所幫助,如果那個地方有不對的也歡迎大家留言糾正!
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java使用Canal同步MySQL數(shù)據(jù)到Redis
在現(xiàn)代微服務(wù)架構(gòu)中,數(shù)據(jù)同步是一個常見的需求,特別是將?MySQL?數(shù)據(jù)實時同步到?Redis,下面我們就來看看Java如何使用Canal同步MySQL數(shù)據(jù)到Redis吧2024-11-11
SpringCloud-Nacos服務(wù)注冊與發(fā)現(xiàn)方式
這篇文章主要介紹了SpringCloud-Nacos服務(wù)注冊與發(fā)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
SpringCloud用Zookeeper搭建配置中心的方法
本篇文章主要介紹了SpringCloud用Zookeeper搭建配置中心的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04
springcloud使用Hystrix進行微服務(wù)降級管理
這篇文章主要介紹了springcloud使用Hystrix進行微服務(wù)降級管理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-04-04

