java - 基于变量在 Jackson JSON 中使用不同的 bean 类?

标签 java json subclass jackson

我有如下 JSON:

[{
  'kind':'1',
  'value1': 'foo',
  'value2': 'bar',
  ...
},
{
  'kind':'2',
  'value1': 'foo',
  'value2': 'bar',
  ...
}
..]

基本上是具有相同变量的对象列表。在我的代码中,我想创建一个包含这些对象的类 A 的 ArrayList。但是,我希望每个对象都属于一类或二类,具体取决于“种类”值。

我怎样才能做到这一点?

谢谢!

最佳答案

这就是 Jackson 所说的“多态类型处理”。关于如何执行此操作有很好的解释 here .您需要告诉 Jackson 在序列化时将类名放入 JSON,并在反序列化时使用该类名。这是通过注释完成的:

@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, 
              include=JsonTypeInfo.As.PROPERTY, property="kind")

[来源:@StaxMan(下)。]

如果您无法控制 JSON 格式,您可以使用 Jackson 将其反序列化为一些常见的中间对象,然后编写代码从中创建所需的子类对象。或者,使用 json.org 库将 JSON 字符串反序列化为 org.json.JSONObject,然后编写代码以根据 JSONObject 的属性构建所需的对象。

关于java - 基于变量在 Jackson JSON 中使用不同的 bean 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4838608/

相关文章:

java - 如何创建另一个 "version"的 process()

java - 如何检查提交时 LOC 是否增加?

Javascript:在 alpacajs 表单名称字段中使用括号?

json - 我将如何使用 SwiftyJSON 解析这种类型的 JSON?

java - maven surefire 报告插件配置

java - 在 JFace 查看器中反射(reflect)数据更改的正确方法

javascript - Kendo 图表绑定(bind)到 JSON

java - 通过调用 super 来重写函数只是为了添加一点功能是不好的做法吗?

Javascript 子类化和 createElement

java - 在 Java 中选择没有 switch 语句的子类