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ì)象類(lèi)
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í)體類(lèi)對(duì)象,Map,List等@RequestParam
用于接收單個(gè)的屬性
像上面的用對(duì)象或者單個(gè)屬性去接收前端傳來(lái)的參數(shù),還是能很愉快的接收的,但是有一種類(lèi)型的就比較容易讓人極度不適了,那就是數(shù)組和集合類(lèi)型的參數(shù)
這里我說(shuō)一個(gè)集合類(lèi)型的參數(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中ScheduledExecutorService介紹和使用案例(推薦)
ScheduledExecutorService是Java并發(fā)包中的接口,用于安排任務(wù)在給定延遲后運(yùn)行或定期執(zhí)行,它繼承自ExecutorService,具有線(xiàn)程池特性,可復(fù)用線(xiàn)程,提高效率,本文主要介紹java中的ScheduledExecutorService介紹和使用案例,感興趣的朋友一起看看吧2024-10-10Java發(fā)送報(bào)文與接收?qǐng)?bào)文的實(shí)例代碼
這篇文章主要介紹了Java發(fā)送報(bào)文與接收?qǐng)?bào)文,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03如何使用Idea中的 Deployment 實(shí)現(xiàn)打包自動(dòng)部署
這篇文章主要介紹了使用Idea中的 Deployment 實(shí)現(xiàn)打包自動(dòng)部署,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08Spring Boot2配置服務(wù)器訪(fǎng)問(wèn)日志過(guò)程解析
這篇文章主要介紹了Spring Boot2配置服務(wù)器訪(fǎng)問(wèn)日志過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11HashSet如何保證元素不重復(fù)(面試必問(wèn))
HashSet 不保證集合的迭代順序,但允許插入 null 值,也就是說(shuō)它可以將集合中的重復(fù)元素自動(dòng)過(guò)濾掉,保證存儲(chǔ)在 HashSet 中的元素都是唯一的,這篇文章主要介紹了HashSet如何保證元素不重復(fù)(面試必問(wèn)),需要的朋友可以參考下2021-12-12Java使用redisson實(shí)現(xiàn)分布式鎖的示例詳解
這篇文章主要為大家詳細(xì)介紹了在Java項(xiàng)目中使用redisson實(shí)現(xiàn)分布式鎖,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以參考一下2023-07-07基于SpringBoot實(shí)現(xiàn)自動(dòng)裝配返回屬性的設(shè)計(jì)思路
這篇文章主要介紹了基于SpringBoot實(shí)現(xiàn)自動(dòng)裝配返回屬性,這里涉及到的技術(shù)知識(shí)點(diǎn)有注解解析器,為什么用ResponseBodyAdvice這里解析?不在Filter,Interceptors,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-03-03