form表單數(shù)據(jù)通過(guò)@RequestBody解析成java實(shí)體類的實(shí)現(xiàn)過(guò)程
解決@RequestBody 請(qǐng)求無(wú)法接收前端數(shù)據(jù)問(wèn)題
最近寫(xiě)一個(gè)前后端分離的項(xiàng)目,前端提交一個(gè)form表格想直接作為后端對(duì)象接收,結(jié)果一直返回NULL給后臺(tái)
后端controller代碼如下
@PostMapping("/user")
public Result<?> save(@RequestBody User user){
System.out.println(user.toString());
return Result.success();
}
entity類代碼如下
通過(guò)按照以往代碼通過(guò)fastJSON解析前端下劃線為駝峰命名
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("user")
@JSONType(naming = PropertyNamingStrategy.SnakeCase)
public class User {
@TableId
private String uId;
private String uUsername;
private String uPassword;
private String uPow;
}
前端通過(guò)axios提交數(shù)據(jù)
methods:{
research(){
axios.post("/api/user",this.search)
},
}
結(jié)果死活數(shù)據(jù)過(guò)不來(lái),看了好多方法,從跨域到axios寫(xiě)法排除最后到格式問(wèn)題,就算前后端數(shù)據(jù)長(zhǎng)一個(gè)樣數(shù)據(jù)都過(guò)不來(lái)
最后發(fā)現(xiàn)如果指定了JSON屬性的對(duì)應(yīng)關(guān)系后就能夠順利接收到數(shù)據(jù)了,實(shí)體類加上注釋:
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("user")
@JSONType(naming = PropertyNamingStrategy.SnakeCase)
public class User {
@TableId
@JsonProperty(value = "uId")
private String uId;
@JsonProperty(value = "uUsername")
private String uUsername;
@JsonProperty(value = "uPassword")
private String uPassword;
@JsonProperty(value = "uPow")
private String uPow;
}
但是每個(gè)實(shí)體類都要加舒適有點(diǎn)蠢,雖然可以但是我不接受
突然想到可以用@RequsetBody傳String類型然后解析成java實(shí)體類就好了
哦吼
fastJSON解析一下舒服
@PostMapping("/user")
public Result<?> save(@RequestBody String user){
User user1 = JSONObject.parseObject(user, User.class);
System.out.println(user1.toString());
return Result.success();
}
前端一般喜歡下劃線命名,后端則喜歡駝峰命名,那么加上這一行注解就能解決問(wèn)題
@JSONType(naming = PropertyNamingStrategy.SnakeCase)
但是好像fastJSON version1.2.75之后改成別的了
總結(jié)
搞定!
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
手把手教你如何在idea中搭建SpringBoot項(xiàng)目
這篇文章主要介紹了如何搭建一個(gè)SpringBoot項(xiàng)目,包括環(huán)境準(zhǔn)備、創(chuàng)建新項(xiàng)目、探索項(xiàng)目結(jié)構(gòu)以及展望未來(lái),通過(guò)詳細(xì)的步驟和實(shí)用的技巧,幫助開(kāi)發(fā)者快速上手SpringBoot開(kāi)發(fā),文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2025-02-02
微服務(wù)Nacos配置動(dòng)態(tài)刷新方式(簡(jiǎn)易版)附配置
這篇文章主要介紹了微服務(wù)Nacos配置動(dòng)態(tài)刷新方式(簡(jiǎn)易版)附配置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-05-05
SpringBoot整合Mybatis與MybatisPlus方法詳細(xì)講解
這篇文章主要介紹了SpringBoot整合Mybatis與MybatisPlus方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-01-01
SpringBoot集成Knife4j實(shí)現(xiàn)接口文檔和參數(shù)校驗(yàn)
Knife4j 是國(guó)人開(kāi)發(fā)的接口文檔增強(qiáng)工具,底層基于 OpenAPI 規(guī)范,但提供了比原生 Swagger UI 更美觀、更貼合國(guó)內(nèi)開(kāi)發(fā)者習(xí)慣的中文界面,本文就給大家介紹了SpringBoot集成Knife4j實(shí)現(xiàn)接口文檔和參數(shù)校操作步驟,需要的朋友可以參考下2026-03-03
MyBatis-Flex BaseMapper的接口基本用法小結(jié)
本文主要介紹了MyBatis-Flex BaseMapper的接口基本用法小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
Java模擬棧和隊(duì)列數(shù)據(jù)結(jié)構(gòu)的基本示例講解
這篇文章主要介紹了Java模擬棧和隊(duì)列數(shù)據(jù)結(jié)構(gòu)的基本示例,棧的后進(jìn)先出和隊(duì)列的先進(jìn)先出是數(shù)據(jù)結(jié)構(gòu)中最基礎(chǔ)的知識(shí),本文則又對(duì)Java實(shí)現(xiàn)棧和隊(duì)列結(jié)構(gòu)的方法進(jìn)行了細(xì)分,需要的朋友可以參考下2016-04-04

