跨境商城網(wǎng)站建設(shè)頭條搜索
?
阿華代碼,不是逆風,就是我瘋
你們的點贊收藏是我前進最大的動力!!
希望本文內(nèi)容能夠幫助到你!!
目錄
一:本文面向的人群
二:錯誤場景引入
三:正確場景引入
四:問題解決
五:解決方法
1:public修飾
2:使用@JsonProperty注解
一:本文面向的人群
本文主要針對類中成員變量命名問題引起傳送json字符串,但是變量為null的情況做出解釋。
其中涉及到@Data注解(Spring自動生成的get和set方法)和@JsonProperty
二:錯誤場景引入
我用postman進行json對象傳輸給Student類,幫助Student類進行初始的過程中,發(fā)現(xiàn)Student并沒有拿到j(luò)son中的參數(shù),于是我展開的研究
Student類我使用了@Data注解進行Object類方法的重寫(其中包含get和set方法)
@Data
public class Student {//@JsonPropertyprivate Integer ID;private String name;private Integer age;
}
我們在反編譯文件中可以看到?
現(xiàn)在我們進行測試
@RequestMapping("test")public String test(@RequestBody Student student){System.out.println();return "返回的參數(shù)為"+student;}
?使用postman中json格式進行傳參,幫助Student初始化,并返回student
可以看到我們進行JSON格式的傳參下,Student并沒有接收到ID這個參數(shù)1,說明就是,set方法沒有拿到參數(shù)ID=1
三:正確場景引入
現(xiàn)在我們把Student類中的成員變量ID設(shè)置為小寫的id,再來進行測試
對應(yīng)的get和set方法
postman測試,可以看見,我們的Student類順利的拿到了JSON中傳過來的參數(shù)
四:問題解決
因為SpringBoot中生成的方法都是小寫字段,這是重點。
Student類中ID成員變量是私有的,需要通過get和set方法進行獲取和設(shè)置,我們通過@Data注解(SpringBoot中內(nèi)置)來寫get和set方法,這兩個方法默認都是小寫字段,所以跟我們傳過來的JSON對象中的大寫字段“ID”匹配不上,進而就賦值失敗,為null。
五:解決方法
1:public修飾
我們將Student中的私有成員變量設(shè)置為public
2:使用@JsonProperty注解
Springboot返回前端的JSON會有個自動大小寫轉(zhuǎn)換,加上這個注解就限制了,就能獲取到值了
@Data
public class Student {@JsonPropertyprivate Integer ID;private String name;private Integer age;
}