首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用jackson反序列化可选多态字段

用jackson反序列化可选多态字段
EN

Stack Overflow用户
提问于 2019-12-03 12:00:22
回答 1查看 174关注 0票数 0

问题

例如,我的购物车里有一些产品的清单,比如电影票、汽车共享和新书。

代码语言:javascript
复制
[
  {
    "name": "Cinema Ticket"
  }, 
  {
    "name": "Car Sharing",
    "properties": { ... }
  },
  {
    "name": "New Book",
  }
]

如您所见,并不是所有的产品都有properties注意:这个字段是多态的。

问题

我是否可以使用杰克逊将“不存在”的字段properties转换为null,或者最好更改api?如果我能那么怎么做呢?

杰克逊版本: 2.10.1

谢谢你的回答!

EN

回答 1

Stack Overflow用户

发布于 2019-12-03 12:35:35

我想你有这样的东西:

代码语言:javascript
复制
public class BaseProduct {
   public String name;
}

public class CarSharing extends BaseProduct {
    public String properties;
}

public class Book extends BaseProduct {
}

不需要将属性字段设置为null当不存在时,您可以使用杰克逊多态功能来不显示它。类似于:

代码语言:javascript
复制
@JsonTypeInfo(use = JsonTypeInfo.Id.MINIMAL_CLASS, include = JsonTypeInfo.As.PROPERTY, property = "type")
public class BaseProduct {
     public String name;
}

产出如下:

代码语言:javascript
复制
[
  {
    "type": ".Book",
    "name": "Book name"
  },
  {
    "type": ".CarSharing",
    "name": "Car share name",
    "properties": "a property field"
  }
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59156638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档