差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

java:jackson:annotation:jsonautodetect [2016/02/21 22:03]
tony
java:jackson:annotation:jsonautodetect [2023/06/25 09:48]
行 1: 行 1:
-{{tag>​java jackson}} 
-====== The visibility of the fields ====== 
-===== Introduction ===== 
-本篇文章在說明:​ 
-  * 預設的輸出欄位顯示規則 
-  * 如何使用@JsonAutoDetect去改變欄位顯示規則 
-===== Default Visibility ===== 
-在沒有特別設定的情況下,Jackson的Serializer是根據Get Method與Class的public data member決定欄位名稱。 
-\\ 
-public data member: 
-<code java> 
-public String mName = "​test";​ 
-</​code>​ 
-Output: 
-<​code>​ 
-{"​mName":"​test"​} 
-</​code>​ 
-get method,boolean回傳值被稱為is-getter:​ 
-<code java> 
-public String getName(){ return "​test";​ } 
-public boolean isValid(){ return false; } 
-</​code>​ 
-Output: 
-<​code>​ 
-{"​name":"​test","​valid":​false} 
-</​code>​ 
-===== Use @JsonAutoDetect ===== 
-@JsonAutoDetect提供五種項目設定,其中creatorVisibility與setterVisibility的實際用途還不曉得,之後再研究:​ 
-  * fieldVisibility:​ 針對data member。 
-  * getterVisibility:​ 針對getXXX()。 
-  * isGetterVisibility:​ 針對type為boolean的isXXX()。 
-預設情況下,成員變數必須宣告為public才會出現在結果。假如使用了fieldVisibility=Visibility.ANY,則會將private成員變數也輸出:​ 
-<code java> 
- @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; 
- } 
- } 
-</​code>​ 
-Output: 
-<​code>​ 
-{"​mName":"​test","​name":"​test"​} 
-</​code>​ 
-而getterVisibility與isGetterVisibility也類似,只是針對項目不同而已。 
-===== Reference ===== 
-  * [[http://​www.cowtowncoder.com/​blog/​archives/​2011/​02/​entry_443.html|Filtering properties]] 
-  * [[http://​tutorials.jenkov.com/​java-json/​jackson-annotations.html|Jackson annotations]] 
-=====    ===== 
----- 
-\\ 
-~~DISQUS~~