關(guān)于@JsonProperty和@JSONField注解的區(qū)別及用法
@JsonProperty和@JSONField注解區(qū)別及用法
1. 目的
都是為了解決bean與json字段不一致問題,或者字段定義不符合前端所需要的標準
2. 區(qū)別
1.框架不同:
@jsonProperty是 Jackson的包,而@jsonfield是fastjson的包
2.用法不同:
(1)bean轉(zhuǎn)換成Json字符串:
@JsonProperty
:ObjectMapper().writeValueAsString(Object value)@JSONField
:ObjectMapper().readValue(String content, Class valueType)
(2)Json字符串轉(zhuǎn)化為bean:
@JsonProperty
:ObjectMapper().readValue(String content, Class valueType)@JSONField
:JSONObject.parseObject(String content, Class valueType)
(3)@JSONField這個注解可以用于get、set以及屬性上面
public class Test{ /* 注解在屬性上的時候可以設(shè)置一些序列化、格式化的屬性 @JSONField(serialize = false)---->序列化的時候忽略這個屬性 @JSONField(format = "yyyyMMdd")---->序列化和反序列化額時候使用yyyyMMdd,一般在Date類型的字段上使用 */ @JSONField(serialize = false) public String Name; /* 注解在set方法表示json轉(zhuǎn)成bean的時候會將json中的Name屬性賦值給實體類的Name */ @JSONField(name="Name") public void setName(String Name){ this.Name = Name; } /* 注解在get方法表示bean轉(zhuǎn)換成json的時候會把實體類的Name屬性值賦給json的Name */ @JSONField(name="Name") public String getName(){ return this.Name; } }
(3)@JSONproperty這個注解用于屬性上面
如把trueName屬性序列化為name,可以在屬性名上面增加@JsonProperty(value=“name”)。
(4)jackson的@JsonIgnore使用
作用:在json序列化時將java bean中的一些屬性忽略掉,序列化和反序列化都受影響。
使用方法:一般標記在屬性或者方法上,返回的json數(shù)據(jù)即不包含該屬性。
jsonField和jsonProperty注解的坑
遇到的問題:
實體類中的字段一般都是首字母小寫的,但是所要傳輸?shù)膉son數(shù)據(jù)(接收的和發(fā)出去的)都要求字段的首字母大寫
public class Test{ ?? ?private String Name;------>setter + getter } json: { ?? ?'Name': 'test' }
但是這樣直接接收的話是接收不到Name的取值的
所以需要使用jsonField注解和jsonProperty注解
@JSONField
這個注解分別可以注解在實體類的屬性、setter和getter方法上
public class Test{?? ? ?? ?/* ?? ??? ?注解在屬性上的時候可以設(shè)置一些序列化、格式化的屬性 ?? ??? ?@JSONField(serialize = false)---->序列化的時候忽略這個屬性 ?? ??? ?@JSONField(format = "yyyyMMdd")---->序列化和反序列化額時候使用yyyyMMdd,一般在Date類型的字段上使用 ?? ?*/?? ? ?? ?@JSONField(serialize = false) ?? ?public String Name; ?? ?/* ?? ??? ?注解在set方法表示json轉(zhuǎn)成bean的時候會將json中的Name屬性賦值給實體類的Name ?? ?*/ ?? ?@JSONField(name="Name") ?? ?public void setName(String Name){ ?? ??? ?this.Name = Name; ?? ?} ?? ?/* ?? ??? ?注解在get方法表示bean轉(zhuǎn)換成json的時候會把實體類的Name屬性值賦給json的Name ?? ?*/ ?? ?@JSONField(name="Name") ?? ?public String getName(){ ?? ??? ?return this.Name; ?? ?} }
@JSONProperty
( 1 ) 此注解用于屬性上,作用是把該屬性的名稱序列化為另外一個名稱,
( 2 ) 如把trueName屬性序列化為name,@JsonProperty(value=“name”)
( 3 ) 類似@JSONField注解注在setter方法上
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot+Nginx實現(xiàn)大文件下載功能
相信很多小伙伴,在日常開放中都會遇到大文件下載的情況,大文件下載方式也有很多,比如非常流行的分片下載、斷點下載;當然也可以結(jié)合Nginx來實現(xiàn)大文件下載,在中小項目非常適合使用,這篇文章主要介紹了Spring Boot結(jié)合Nginx實現(xiàn)大文件下載,需要的朋友可以參考下2024-05-05java線程Thread.sleep()對比對象的wait示例解析
這篇文章主要為大家介紹了java線程Thread.sleep()對比對象的wait示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09springboot自動掃描添加的BeanDefinition源碼實例詳解
這篇文章主要給大家介紹了關(guān)于springboot自動掃描添加的BeanDefinition的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-02-02netty?pipeline中的inbound和outbound事件傳播分析
這篇文章主要為大家介紹了netty?pipeline中的inbound和outbound事件傳播分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04Java CountDownLatch計數(shù)器與CyclicBarrier循環(huán)屏障
CountDownLatch是一種同步輔助,允許一個或多個線程等待其他線程中正在執(zhí)行的操作的ASET完成。它允許一組線程同時等待到達一個共同的障礙點2023-04-04JAVA實現(xiàn)空間索引編碼——GeoHash的示例
本篇文章主要介紹了JAVA實現(xiàn)空間索引編碼——GeoHash的示例,如何從眾多的位置信息中查找到離自己最近的位置,有興趣的朋友可以了解一下2016-10-10Spring?MVC DispatcherServlet處理請求過程示例詳解
這篇文章主要介紹了Spring?MVC?DispatcherServlet處理請求過程示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09springboot項目如何設(shè)置session的過期時間
這篇文章主要介紹了springboot項目如何設(shè)置session的過期時間,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01