• 使用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"}
  • 相关阅读:
    [COGS2580]偏序 II
    [COGS2479]偏序
    [BZOJ2716]天使玩偶
    [BZOJ4237]稻草人/[JOISC2014]かかし
    Ynoi2015 世上最幸福的女孩
    ARC098D Donation
    BZOJ3691 游行
    CF923E Perpetual Subtraction
    Luogu P4191 [CTSC2010]性能优化
    Topcoder SRM 590 Fox And City
  • 原文地址:https://www.cnblogs.com/moonpool/p/11935252.html
Copyright © 2020-2023  润新知