使用JSONObject進行序列化時,避開定義get或set為開頭的方法名稱


從結果中可以看到,JSONObject對Test對象進行序列化時,把fileName也當做屬性了。

 

原因:涉及到JavaBean規范(參考:https://www.cnblogs.com/yusiming/p/9780726.html)。

JavaBean必須要為成員提供get/set方法,只提供其中的一個也是可以的,必須要有一個無參構造器,一般對於具有get或這個set方法的成員我們稱之為屬性,就算一個屬性,沒有對應的成員變量只有get/set方法,也是可以的

 

因為在接口中定義了一個get開頭的方法,在父類中實現了該方法,導致JSONObject在序列化時將filenName當做屬性看待

 1 import com.alibaba.fastjson.JSONObject;
 2 
 3 public class main {
 4 
 5 
 6     public static void main(String[] args){
 7 
 8         Test t=new main().new Test();
 9         System.out.println(JSONObject.toJSONString(t));
10 
11 
12     }
13     public interface a{
14         public String getFileName();
15     }
16 
17 
18     public class base implements a{
19         @Override
20         public String getFileName(){
21             System.out.println("5555555555555");
22             return "111111111111";
23         }
24     }
25 
26     public class Test extends base{
27         public String a="0";
28         public String b="1";
29         public String c="2";
30     }
31 
32 }

結果:

1 5555555555555
2 {"a":"0","b":"1","c":"2","fileName":"111111111111"}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM