序列化继承HashMap<String,Object>的bean为Json?

动态给Java类添加字段

plan 类

public class Plan extends HashMap<String, Object>
{
  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<String, Object>
{
  private Long barcode; //条形码

  public Long getBarcode()
  {
    return barcode;
  }
  public void setBarcode(Long barcode)
  {
    this.put("barcode", (this.barcode = barcode));
  }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JAVA序列化机制的深入研究 对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整...
    时待吾阅读 10,923评论 0 24
  • 1.概述2.Gson的目标3.Gson的性能和扩展性4.Gson的使用者5.如何使用Gson 通过Maven来使用...
    人失格阅读 14,353评论 2 18
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • 概况 在线地址:http://www.kancloud.cn/jsfront/month/82796 JS前端开发...
    打杂_豪情阅读 527评论 0 5
  • 姨妈来了,脾气真的会很差,现在不知为啥,就好生气。就想睡觉 周,我真的无力了,就做朋友吧,可能,我不适合恋爱,太累了
    作女不作阅读 155评论 0 0