zoukankan      html  css  js  c++  java
  • 使用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"}
  • 相关阅读:
    MacBook Pro修改hosts
    Python WebSocket
    TCP三次握手和四次挥手过程
    Tcp三次握手和四次挥手
    常见正则表达式
    Python正则表达式
    Python使用gevent实现协程
    Tcp客户端构建流程
    AC6102开发板USB3.0测试和使用说明
    AC6102 DDR2测试工程
  • 原文地址:https://www.cnblogs.com/moonpool/p/11935252.html
Copyright © 2011-2022 走看看