把物件序列化為json字串輸出的庫很多,本文我們來看如何基於jackson動態控制哪些屬性需要進行序列化。
對應使用jackson,需要我們在pom檔案中引入下面依賴:
com.fasterxml.jackson.core
jackson-databind
2.11.1
首先簡單看下如何使用:
@data
@jsonfilter("car")
static class car
@data
@jsonfilter("house")
static class house
@data
@jsonfilter("person")
static class person
public static person makeperson()
public static void main(string arg) throws jsonprocessingexception
,
"house":,
"weight":150,
"id":8888,
"name":"加多"
}
如上person中所有屬性,包含其中car中所有屬性,house的所屬性都輸出了。
如果我們不想序列化某個屬性,比如不想序列化person中的car中的price屬性,則我們只需要在car類屬性上加註解:@jsonignore
:
@data
static class car
同理如果不想要序列化person中的car屬性,在其上新增@jsonignore
註解即可。
對應上面情況,我們只能靜態的使用@jsonignore
註解來過濾不需要序列化的屬性,那麼有沒有辦法在執行時進行動態過濾不需要過濾的屬性那?其實註解@jsonfilter
,就可以做這個事件。
@data
@jsonfilter("car")
static class car
@data
@jsonfilter("house")
static class house
@data
@jsonfilter("person")
static class person
如上首先在所有類上加上對應的註解,然後通過下面**新增過濾器:
public static void main(string arg) throws jsonprocessingexception
,
"house":,
"name":"加多"
}
可知序列化時,只序列化了我們指定的字段。上面**只是乙個例項,在執行時,我們可以根據需要動態設定過濾器,來起到動態序列化指定欄位的功能。
本文我們談論了如何使用@jsonfilter
進行動態指定需要序列化欄位的功能。
需要注意的是一旦乙個類上加了@jsonfilter
註解,如果沒有指定過濾器,則執行時會報錯,那麼如何讓乙個類即可以支援動態過濾,又在沒指定過濾器的情況下正常執行那?其實很簡單,我們可以自定義註解並註冊解析器...
戳下面閱讀
????
我的第三本書
我的第二本書
我的第一本書
golang併發教程
forkjoinpool
k8s網路模型
人生需規劃
再見阿里巴巴
點亮再看哦????
基於jackson動態序列化指定字段
把物件序列化為json字串輸出的庫很多,本文我們來看如何基於jackson動態控制哪些屬性需要進行序列化。對應使用jackson,需要我們在pom檔案中引入下面依賴 com.fasterxml.jackson.core jackson databind 2.11.1 首先簡單看下如何使用 data ...
jackson 列舉 序列化和反序列
網上這類資料很少,自己總結一下 data allargsconstructor public static enum eventjackson的列舉序列化 預設序列化為enum的name event.get password序列化為 get password 反序列化也一樣,只有string為 ge...
jackson反序列化物件
jackson解析json字串是區分大小寫的,如果對應的字段首字母為大寫或者不好設定對應的型別,寫出的get方法是獲取不到json值的,那麼這時候就需要新增 jsonproperty name 註解來標註反序列化的是哪個字段。如果反序列化的物件中包含物件或者集合,比如說map,list等,這時候就需...