【问题标题】:jackson polymorphic deserialization without field没有字段的杰克逊多态反序列化
【发布时间】:2016-11-25 10:06:51
【问题描述】:

我能够在 jackson 中尝试多态反序列化的简单案例。

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY,
  property = "type", visible = true)
@JsonSubTypes({
@Type(value = A.class, name = "a"),
@Type(value = B.class, name = "b")
})
Class Base {
  private String type;
...
}

Class A extends Base {
...
}

Class B extends Base {
...
}

但我面临的是我无法控制传入的 Json。 json看起来像

{ "type" : a, "params" : { .. fields for type A .. } }

{ "type" : b, "params" : { .. fields for type B .. } }

params 字段可以是 A 或 B 类型。 AB 都继承自 Base,但决定 type 的列在 params 字段之外。

如何配置jackson查看类外的字段,然后决定实际类型

【问题讨论】:

    标签: java json serialization jackson deserialization


    【解决方案1】:

    找到答案 Java: Jackson polymorphic JSON deserialization of an object with an interface property?

    我们需要将注解放在使用外部属性反序列化的变量上

    @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY,
        property = "type")
    @JsonSubTypes({
        @Type(value = A.class, name = "a"),
        @Type(value = B.class, name = "b") 
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多