自動檢測,(作用在類上)來開啟/禁止自動檢測。
fieldVisibility:字段的可見級別
ANY:任何級別的字段都可以自動識別
NONE:所有字段都不可以自動識別
NON_PRIVATE:非private修飾的字段可以自動識別
PROTECTED_AND_PUBLIC:被protected和public修飾的字段可以被自動識別
PUBLIC_ONLY:只有被public修飾的字段才可以被自動識別
DEFAULT:
jackson默認的字段屬性發現規則如下:
所有被public修飾的字段->所有被public修飾的getter->所有被public修飾的setter)
2、@JsonIgnore
作用在字段或方法上,用來完全忽略被注解的字段和方法對應的屬性.
3、@JsonProperty
4、@JsonIgnoreProperties
作用在類上,用來說明有些屬性在序列化/反序列化時需要忽略掉,可以將它看做是@JsonIgnore的批量操作,但它的功能比@JsonIgnore要強,比如一個類是代理類,我們無法將將@JsonIgnore標記在屬性或方法上,此時便可用@JsonIgnoreProperties標注在類聲明上,它還有一個重要的功能是作用在反序列化時解析字段時過濾一些未知的屬性,否則通常情況下解析到我們定義的類不認識的屬性便會拋出異常。
可以注明是想要忽略的屬性列表如@JsonIgnoreProperties({"name","age","title"}),
也可以注明過濾掉未知的屬性如@JsonIgnoreProperties(ignoreUnknown=true)
5、@JsonUnwrapped
作用在屬性字段或方法上,用來將子JSON對象的屬性添加到封閉的JSON對象。
6、@JsonIdentityInfo
2.0+版本新注解,作用於類或屬性上,被用來在序列化/反序列化時為該對象或字段添加一個對象識別碼,通常是用來解決循環嵌套的問題
7、@JsonNaming
jackson 2.1+版本的注解,作用於類或方法,注意這個注解是在jackson-databind包中而不是在jackson-annotations包里,它可以讓你定制屬性命名策略,作用和前面提到的@JsonProperty的重命名屬性名稱相同。
8、@JsonTypeInfo
作用於類/接口,被用來開啟多態類型處理,對基類/接口和子類/實現類都有效
9、@JsonSubTypes
作用於類/接口,用來列出給定類的子類,只有當子類類型無法被檢測到時才會使用它,一般是配合@JsonTypeInfo在基類上使用
作用於子類,用來為多態子類指定類型標識符的值
11、@JsonTypeResolver和@JsonTypeIdResoler
作用於類,可以自定義多態的類型標識符,這個平時很少用到,主要是現有的一般就已經滿足絕大多數的需求了,如果你需要比較特別的類型標識符,建議使用這2個注解,自己定制基於TypeResolverBuilder和TypeIdResolver的類即可
12、@JsonSerialize和@JsonDeserialize
作用於方法和字段上,通過 using(JsonSerializer)和using(JsonDeserializer)來指定序列化和反序列化的實現,通常我們在需要自定義序列化和反序列化時會用到,比如下面的例子中的日期轉換
13、@JsonPropertyOrder
作用在類上,被用來指明當序列化時需要對屬性做排序,它有2個屬性
一個是alphabetic:布爾類型,表示是否采用字母拼音順序排序,默認是為false,即不排序
14、JsonView
視圖模板,作用於方法和屬性上,用來指定哪些屬性可以被包含在JSON視圖中15、@JsonFilter
Json屬性過濾器,作用於類,作用同上面的@JsonView,都是過濾掉不想要的屬性,輸出自己想要的屬性。和@FilterView不同的是@JsonFilter可以動態的過濾屬性,比如我不想輸出以system開頭的所有屬性
16、@JsonIgnoreType
作用於類,表示被注解該類型的屬性將不會被序列化和反序列化17、@JsonAnySetter
18、@JsonCreator
作用於方法,通常用來標注構造方法或靜態工廠方法上,使用該方法來構建實例,默認的是使用無參的構造方法,通常是和@JsonProperty或@JacksonInject配合使用
19、@JacksonInject
作用於屬性、方法、構造參數上,被用來反序列化時標記已經被注入的屬性20、@JsonPOJOBuilder
作用於類,用來標注如何定制構建對象,使用的是builder模式來構建,比如Value v = new ValueBuilder().withX(3).withY(4).build();這種就是builder模式來構建對象,通常會喝@JsonDeserialize.builder來配合使用。
具體事例可以移步:http://blog.csdn.net/sdyy321/article/details/40298081