jackson容許使用任意的構造方法或工廠方法來構造實例html
fieldVisibility:字段的可見級別java
ANY:任何級別的字段均可以自動識別android
NONE:全部字段都不能夠自動識別ide
NON_PRIVATE:非private修飾的字段能夠自動識別this
PROTECTED_AND_PUBLIC:被protected和public修飾的字段能夠被自動識別spa
PUBLIC_ONLY:只有被public修飾的字段才能夠被自動識別.net
DEFAULT:同PUBLIC_ONLYcode
jackson默認的字段屬性發現規則以下:htm
全部被public修飾的字段->全部被public修飾的getter->全部被public修飾的setter對象
舉例:
public static class TestPOJO{ TestPOJO(){} TestPOJO(String name){ this.name = name; } private String name; @Override public String toString() { return "TestPOJO{" + "name='" + name + '\'' + '}'; } }
這個類咱們只有一個private的name屬性,而且沒有提供對應的get,set方法,若是按照默認的屬性發現規則咱們將沒法序列化和反序列化name字段(若是沒有get,set方法,只有被public修飾的屬性纔會被發現),你能夠經過修改@JsonAutoDetect的fieldVisibility來調整自動發現級別,爲了使name被自動發現,咱們須要將級別調整爲ANY
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
同理,除了fieldVisibility能夠設置外,還能夠設置getterVisibility、setterVisibility、isGetterVisibility、creatorVisibility級別
看上面自動檢測,再也不重複
做用在字段或方法上,用來徹底忽略被註解的字段和方法對應的屬性,即使這個字段或方法能夠被自動檢測到或者還有其餘的註解
當@JsonIgnore無論註解在getters上仍是setters上都會忽略對應的屬性
做用在字段或方法上,用來對屬性的序列化/反序列化,能夠用來避免遺漏屬性,同時提供對屬性名稱重命名,好比在不少場景下Java對象的屬性是按照規範的駝峯書寫,可是實際展現的倒是相似C-style或C++/Microsolft style
轉:https://blog.csdn.net/eandroidhu/article/details/50341249