Jackson忽略欄位不序列化欄位的3種方法

2021-10-10 01:23:06 字數 3186 閱讀 4587

相對於忽略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 是根據欄位名直接返回的...