序列化继承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));
}
推荐阅读
- HashMap 实现原理与源码分析
- web渗透测试与代码审计|远程命令执行与反序列化之——Struts框架全系列命令执行漏洞还原
- 反编译|手把手教你写JAVA反序列化的POC
- HashMap源码深度剖析,手把手带你分析每一行代码,包会!!!
- 重新认识面向对象
- HashMap你真的了解吗?
- HashMap设计原理与实现(下篇)200行带你写自己的HashMap!!!
- 自己动手实现|自己动手实现 HashMap(Python字典),彻底系统的学习哈希表(上篇)——不看血亏!!!
- LruCache之HashMap分析
- 笔记|C++(继承和派生)