Jackson 常用註解 annotation

2021-08-16 07:35:09 字數 2231 閱讀 4674

1、@jsonautodetect

自動檢測,(作用在類上)來開啟/禁止自動檢測。

fieldvisibility:欄位的可見級別   

any:任何級別的字段都可以自動識別  

none:所有欄位都不可以自動識別   

non_private:非private修飾的字段可以自動識別  

protected_and_public:被protected和public修飾的字段可以被自動識別   

public_only:只有被public修飾的字段才可以被自動識別     

default:

jackson預設的字段屬性發現規則如下:

所有被public修飾的字段->所有被public修飾的getter->所有被public修飾的setter)

作用在字段或方法上,用來完全忽略被註解的字段和方法對應的屬性.

作用在字段或方法上,用來對屬性的序列化/反序列化,可以用來避免遺漏屬性,同時提供對屬性名稱重新命名

作用在類上,用來說明有些屬性在序列化/反序列化時需要忽略掉,可以將它看做是@jsonignore的批量操作,但它的功能比@jsonignore要強,比如乙個類是**類,我們無法將將@jsonignore標記在屬性或方法上,此時便可用@jsonignoreproperties標註在類宣告上,它還有乙個重要的功能是作用在反序列化時解析欄位時過濾一些未知的屬性,否則通常情況下解析到我們定義的類不認識的屬性便會丟擲異常。

可以註明是想要忽略的屬性列表如@jsonignoreproperties(),

也可以註明過濾掉未知的屬性如@jsonignoreproperties(ignoreunknown=true)

作用在屬性欄位或方法上,用來將子json物件的屬性新增到封閉的json物件。

2.0+版本新註解,作用於類或屬性上,被用來在序列化/反序列化時為該物件或字段新增乙個物件識別碼,通常是用來解決迴圈巢狀的問題

jackson 2.1+版本的註解,作用於類或方法,注意這個註解是在jackson-databind包中而不是在jackson-annotations包裡,它可以讓你定製屬性命名策略,作用和前面提到的@jsonproperty的重新命名屬性名稱相同。

作用於類/介面,被用來開啟多型型別處理,對基類/介面和子類/實現類都有效

作用於類/介面,用來列出給定類的子類,只有當子類型別無法被檢測到時才會使用它,一般是配合@jsontypeinfo在基類上使用

10、 @jsontypename

作用於子類,用來為多型子類指定型別識別符號的值

11、@jsontyperesolver和@jsontypeidresoler

作用於類,可以自定義多型的型別識別符號,這個平時很少用到,主要是現有的一般就已經滿足絕大多數的需求了,如果你需要比較特別的型別識別符號,建議使用這2個註解,自己定製基於typeresolverbuilder和typeidresolver的類即可

作用於方法和字段上,通過 using(jsonserializer)和using(jsondeserializer)來指定序列化和反序列化的實現,通常我們在需要自定義序列化和反序列化時會用到,比如下面的例子中的日期轉換

作用在類上,被用來指明當序列化時需要對屬性做排序,它有2個屬性

乙個是alphabetic:布林型別,表示是否採用字母拼音順序排序,預設是為false,即不排序

檢視模板,作用於方法和屬性上,用來指定哪些屬性可以被包含在json檢視中

json屬性過濾器,作用於類,作用同上面的@jsonview,都是過濾掉不想要的屬性,輸出自己想要的屬性。和@filterview不同的是@jsonfilter可以動態的過濾屬性,比如我不想輸出以system開頭的所有屬性

作用於類,表示被註解該型別的屬性將不會被序列化和反序列化

作用於方法,在反序列化時用來處理遇到未知的屬性的時候呼叫,在本文前面我們知道可以通過註解@jsonignoreproperties(ignoreunknown=true)來過濾未知的屬性,但是如果需要這些未知的屬性

作用於方法,通常用來標註構造方法或靜態工廠方法上,使用該方法來構建例項,預設的是使用無參的構造方法,通常是和@jsonproperty或@jacksoninject配合使用

作用於屬性、方法、構造引數上,被用來反序列化時標記已經被注入的屬性

作用於類,用來標註如何定製構建物件,使用的是builder模式來構建,比如value v = new valuebuilder().withx(3).withy(4).build();這種就是builder模式來構建物件,通常會喝@jsondeserialize.builder來配合使用。

Jackson常用註解介紹

jackson預設是針對get方法來生成json字串的,可以使用註解來做一些特殊用途 常見的使用如下 1 排除屬性 jsonignore,一般標記在屬性或方法上 作用於序列化與反序列化 jsonignoreproperties,如果是 類,由於無法標記在屬性或方法上,所以,可以標記在類宣告上 也作用...

常用Jackson註解解釋

jsonnaming snakecasestrategy.class 指定json欄位名對映策略為蛇形大小寫策略。預設則直接使用bean屬性名 可用的命名對映策略還有 kebabcasestrategy 肉串策略 單詞小寫,使用連字元 連線 snakecasestrategy 蛇形策略 單詞小寫,使...

Jackson常用註解介紹

jackson預設是針對get方法來生成json字串的,可以使用註解來做一些特殊用途 常見的使用如下 1 排除屬性 jsonignore,一般標記在屬性或方法上 作用於序列化與反序列化 jsonignoreproperties,如果是 類,由於無法標記在屬性或方法上,所以,可以標記在類宣告上 也作用...