序列化继承HashMap的bean为Json()

动态给Java类添加字段
plan 类

public class Plan extends HashMap { private Long barcode; //条形码public Long getBarcode() { return barcode; } public void setBarcode(Long barcode) { this.barcode = barcode; }

Plan对象
Plan plan = new Plan(); plan.setBarcode(123456789L); plan.put("size", "L");

使用jackson或gson序列化后barcode的值没有了
{"size":"L"}

原因:
jackson解析的时,会获取父类的Class类型来执行不同解析实现类, 而Plan继承了HashMap,他的解析实现类是MapSerializer! 而MapSerializer解析时,不会序列自身的属性!只会序列自身存储的Entry[](HashMap内的一个存储数据的数组)数组! 自然就没有序列到Plan类的barcode!

解决:
public class Plan extends HashMap { private Long barcode; //条形码public Long getBarcode() { return barcode; } public void setBarcode(Long barcode) { this.put("barcode", (this.barcode = barcode)); }

    推荐阅读