SpringBoot后端接收數(shù)組對(duì)象的實(shí)現(xiàn)
SpringBoot后端接收數(shù)組對(duì)象
前端代碼
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ù)對(duì)象類
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ù)組報(bào)400或收不到參數(shù)值
遇到一個(gè)關(guān)于前端傳數(shù)組到后端時(shí)因?yàn)闊o(wú)法接收參數(shù)報(bào)400或者接收不到參數(shù)值的問(wèn)題:
在springboot項(xiàng)目中經(jīng)常會(huì)用 @RequestBody 或者 @RequestParam在接口中接收參數(shù),我們都知道:
@RequestBody用于接收json格式的對(duì)象數(shù)據(jù),像自定義User實(shí)體類對(duì)象,Map,List等@RequestParam用于接收單個(gè)的屬性


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

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

