Json串的字段如果和類中字段不一致,如何映射、轉換?


Json串是我們現在經常會遇到的一種描述對象的字符串格式。在用Java語言開發的功能中,也經常需要做Json串與Java對象之間的轉換。

 

 

fastjson就是經常用來做Json串與Java對象之間的轉換,就像下面我用fastjson實現的示例。

 

 

可是有的情況就無法這樣簡單處理,比如json串的字段和類中的字段不一致時。不一致有以下這些情況。

json串的字段名與類中的字段名不一致

比如我們上面的例子中類中的字段名叫“id”,而要求json中的字段名叫“tid”。那要怎么辦呢?fastjson已經替我們想到了。看我下面的示例。

 

 

和上面示例的代碼的區別是在需要處理的字段上又加了一個注解,通過這個注解來告訴fastjson對應的json的字段名就可以了。執行一下,看看能不能達到想要的效果。

 

 

json串中的字段名變成了“tid”,達到了我們的預期。

類中的字段不需要轉換到json串中

還有的情況是我們java類中的一些字段不希望在轉換后的json串中出現,那這種情況要怎么處理呢?這個需求“@JSONField”注解照樣能幫我們解決。

看示例。

 

 

“@JSONField”注解有個屬性叫serialize,默認值為true,表示這個字段是會轉換(序列化)到json串中。設置成false就是表示這個字段不轉換到json串中。

照樣執行看看結果是否達到我們的預期。

 

 

在json串中已經沒有了“id”這個字段的內容了。

Json串中的字段不希望轉換到java對象中

還有的時候是Json串中有的字段在java類中有對應位置同名的字段,但是我們又不希望這個字段轉換到java對象中,那又要怎么辦呢?“@JSONField”注解還是能完成這個任務。

 

 

這次使用了“@JSONField”注解的另外一個屬性deserialize,大家是不是已經猜出來了這個屬性的含義呢。

這個屬性值一樣默認為true,表示從json串轉換(反序列化)為java對象時轉換這個字段。那我們不需要轉換這個字段就設置false就可以了。

一起來看看執行結果,是不是達到了我們的要求。

 

 

恩,json中的id沒有轉換到對象中。

這個“@JSONField”還有很多其他的屬性,大家有興趣可以自己研究,或者評論區一起討論討論。

今天的內容就到這里了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM