這是本文件的舊版!
The visibility of the fields
Introduction
本篇文章在說明:
- 預設的輸出欄位顯示規則
- 如何使用@JsonAutoDetect去改變欄位顯示規則
Default Visibility
在沒有特別設定的情況下,Jackson的Serializer是根據Get Method與Class的public data member決定欄位名稱。
public data member:
public String mName = "test";Output:
{"mName":"test"}get method,boolean回傳值被稱為is-getter:
public String getName(){ return "test"; } public boolean isValid(){ return false; }Output:
{"name":"test","valid":false}
Use @JsonAutoDetect
@JsonAutoDetect提供五種項目設定,其中creatorVisibility與setterVisibility的實際用途還不曉得,之後再研究:
- fieldVisibility: 針對data member。
- getterVisibility: 針對getXXX()。
- isGetterVisibility: 針對type為boolean的isXXX()。
預設情況下,成員變數必須宣告為public才會出現在結果。假如使用了fieldVisibility=Visibility.ANY,則會將private成員變數也輸出:
@JsonAutoDetect(fieldVisibility=Visibility.ANY) public static class AutoDetectObject { private String mName ; public AutoDetectObject(){ } private void setName(String aName){ mName = aName; } public String getName(){ return mName; } }Output:
{"mName":"test","name":"test"}而getterVisibility與isGetterVisibility也類似,只是針對項目不同而已。
Reference