以下內容摘錄、翻譯自
(1)初級
我們從幾個簡單的使用場景開始:重新命名屬性,忽略屬性,以及修改屬性所使用的型別。
注意:下面的例子僅僅顯示了成員屬性(field properties),註解同樣也可以用在成員方法(getter/setter)上。
①屬性重新命名時使用的註解
最常見的使用方式之一就是改變某個成員屬性所使用的json名稱,例如:
public class name
將會生成如下所示的json資料結果:
而不是:
②忽略屬性時使用的註解
有時pojo包括了一些你不希望輸出的屬性,在這種情況下,你可以進行如下操作:
public class value
這時得到的json資料結果如下:
或者,你可能忽略掉某些從json資料中得到的屬性,如果是這樣,你可以使用:
@jsonignoreproperties()
public class value
這樣就能夠處理像如下所示的json資料:
最後,你甚至能簡單地忽略掉從json(由於在應用中沒有完全匹配的pojo)中獲得的所有「多餘的」屬性。你可以通過新增如下**完成這個操作:
@jsonignoreproperties(ignoreunknown=true)
public class pojowithany
③選擇更多/更少(more/less)指定型別(specific types)時使用的註解
在有些情況下,jackson在讀入或輸出乙個成員屬性時,所選用的型別(type)可能並不是你想要的:
?當讀取(反序列化)時,宣告的型別(declared type)可能是乙個基本型別(general type),但是你確切地知道應該使用的實現型別(譯註:也就說,我們需要反序列化後生成的物件是實現型別的);
?當輸出(序列化)時,jackson預設使用的是給定的執行時型別(the specific runtime type);但是你可能不想輸出那個型別的所有資訊,而僅僅是它的父型別所囊括的資訊。
在這些應用場景,你可以使用如下的註解進行處理:
public class valuecontainer
(2)中級
①使用構造器或工廠方法
在預設情況下,當由json資料建立相應類的例項時,jackson嘗試使用該類的「預設」構造器(即無引數構造器)。不過,你可以選擇使用其他的構造器,或者乙個靜態工廠方法,來建立例項。完成這個操作,你需要使用@jsoncreator註解,有可能還需要使用@jsonproperty註解給引數(arguments)繫結名稱。
public class ctorpojo
}使用相同的方式,可以將@jsoncreator用在靜態工廠方法上。不過,還有乙個可選的替代方案,被稱作「授權式」構建器(「delegating」 creator):
public class delegatingpojo {
private final int _x, _y;
@jsoncreator
public delegatingpojo(map
jsckson常用註解
以下內容摘錄 翻譯自 1 初級 我們從幾個簡單的使用場景開始 重新命名屬性,忽略屬性,以及修改屬性所使用的型別。注意 下面的例子僅僅顯示了成員屬性 field properties 註解同樣也可以用在成員方法 getter setter 上。屬性重新命名時使用的註解 最常見的使用方式之一就是改變某個...
註解概念與常用註解
註解概念與常用註解 註解在開發過程中可以簡化複雜的檔案配置,優化設計模式結構,使得現在的開發模式逐漸變為註解 設計模式 反射 annotation概念 註解在 中是一種標記符號,這些標記符號可以在 的原始碼期 編譯期和執行期被讀取,執行相應的功能。annation 修飾範圍 註解可以用來修飾 的包 ...
spring 常用註解, primary註解
擴充套件 spring註解常用彙總 使用註解之前要開啟自動掃瞄功能 其中base package為需要掃瞄的包 含子包 configuration把乙個類作為乙個ioc容器,它的某個方法頭上如果註冊了 bean,就會作為這個spring容器中的bean。scope註解 作用域 lazy true 表...