Jackson反序列化的坑

Posted by 大雁小鱼的博客 on March 23, 2019
  1. Jackson反序列化时,会根据带get的方法去掉get后首字母小写来确定参数,所以,如果某个get函数没有参数,则请使用@JsonIgnore来避免它序列化,否则会出现错误

  2. Jackson需要类提供空构造函数,才能反序列化,否则会出错,这一点貌似和DDD中的不变量冲突

  3. Jackson在反序列化时不支持对枚举的非构造函数中参数的设置,比如在下面这个枚举中,ignore字段是不会被设置的

    enum E{
       A(1,"");
       private int value;
       private String desc;
       E(int value,String desc){
          this.vaule = value;
          this.desc = desc;
       }
       private int ignore;
       public void setIgnore(int ignore){
         this.ignore = ignore;
       }
    }
    

Jackson序列化的其他问题,可以参考文章
https://my.oschina.net/u/3664884/blog/1932829
https://blog.csdn.net/vertx/article/details/10426689