相對於忽略null欄位,在實際應用中,忽略某些欄位的序列化可能更為常見。
jackson對於如何序列化字段、過濾欄位的方法多種多樣,非常豐富,這一節先來了解一下3種簡單的方法。
本篇內容基於jackson 2.11.2版本,馬上開始學習吧。
為字段新增@jsonignore註解,可以忽略該字段的序列化和反序列化。
public
class
articleignore
}
/**
* 為字段新增@jsonignore註解,可以忽略該字段的序列化和反序列化。
* * @throws jsonprocessingexception
*/@test
public
void
jsonignore()
throws jsonprocessingexception "
;readvalue
(str, articleignore.
class);
system.out.
println
(newarticle.
tostring());}
執行結果:
articleignore [title=title, summary=null, content=content, author=null]
為類新增jsonignoreproperties註解,可以忽略指定多個欄位的序列化和反序列化。
@jsonignoreproperties()
public
class
articleignoreproperties
}
/**
* 為類新增@jsonignoreproperties註解,忽略指定欄位的序列化和反序列化。
* * @throws jsonprocessingexception
*/@test
public
void
jsonignoreproperties()
throws jsonprocessingexception "
;readvalue
(str, articleignoreproperties.
class);
system.out.
println
(newarticle.
tostring());}
執行結果:
articleignoreproperties [title=title, summary=null, content=content, author=null]
jsonignore作用於單個字段,jsonignoreproperties作用於類的多個字段,兩者都是用來忽略指定的字段。
除此之外,還有另外乙個以jsonignore開頭的註解jsonignoretype,用於忽略指定型別(類、介面)的字段。
在指定的型別上,新增@jsonignoretype註解,可以忽略該型別的字段進行序列化。
public
class
animalignoretype
}// 忽略getter、setter方法
@override
public string tostring()
}
/**
* 如果需要忽略某個具體的型別(類、介面)的序列化,可以使用@jsonignoretype註解來實現。
* * @throws jsonprocessingexception
*/@test
public
void
ignoretype()
throws jsonprocessingexception }"
;readvalue
(jsonstring, animalignoretype.
class);
system.out.
println
(newanimal.
tostring());}
執行結果:
animalignoretype [name=sam, date=sat oct 03 16:40:43 cst 2020, address=null]
由於address型別新增了忽略型別的註解,因此在序列化和反序列化時該型別的字段被忽略了。
前面使用jsonignoretype註解,忽略的型別是固定的。
public
class
animalignoretype
}// 省略getter、setter方法
@override
public string tostring()
}
首先,定義乙個空的類,並新增jsonignoretype註解。
@jsonignoretype
public
class
ignoretype
下面的例子,會將ignoretype類的註解,新增到date和address上,因此序列化時這兩個類對應的字段會被忽略。
/**
* * @throws jsonprocessingexception
*/@test
public
void
mixin()
throws jsonprocessingexception
執行結果:
如果需要忽略某個指定的字段,使用jsonignore註解是最簡單的方式。
如果需要忽略多個字段,有時候可能還會調整,那麼使用jsonignoreproperties註解將會更加靈活。
《輕鬆學習jackson》程式設計師口袋裡的開發手冊
教程:996geek.com
部落格:binarylife.icu
基於jackson動態序列化指定字段
把物件序列化為json字串輸出的庫很多,本文我們來看如何基於jackson動態控制哪些屬性需要進行序列化。對應使用jackson,需要我們在pom檔案中引入下面依賴 com.fasterxml.jackson.core jackson databind 2.11.1 首先簡單看下如何使用 data ...
如何基於jackson動態序列化指定字段
把物件序列化為json字串輸出的庫很多,本文我們來看如何基於jackson動態控制哪些屬性需要進行序列化。對應使用jackson,需要我們在pom檔案中引入下面依賴 com.fasterxml.jackson.core jackson databind 2.11.1 首先簡單看下如何使用 data ...
jackson序列化字段字母大小寫
從springboot預設的jackson切換到fastjson 發現欄位xaxis 從xaxis 變成了xaxis 使用lombok getter註解實現get方法 發現該方法的get方法為getxaxis 根據jackson序列化規則會轉化為 xaxis fastjson 是根據欄位名直接返回的...