Java JsonSubType未序列化到适当的类

Java JsonSubType未序列化到适当的类,java,json,jackson,jackson-databind,Java,Json,Jackson,Jackson Databind,“我试图使用JsonInclude和子类型进行序列化和反序列化。当我将Postman的type属性作为“A”或“B”传递时,它似乎起作用。我添加了新的类型“C”,它也绑定到类A.class。但是,它无法创建它并创建默认类(B.class)相反,我不知道它有什么问题。文档并没有说我们不能将两个不同的名称绑定到同一个类 @JsonInclude(Include.NON_EMPTY) @JsonIgnoreProperties(ignoreUnknown = true) @JsonTy

“我试图使用JsonInclude和子类型进行序列化和反序列化。当我将Postman的type属性作为“A”或“B”传递时,它似乎起作用。我添加了新的类型“C”,它也绑定到类A.class。但是,它无法创建它并创建默认类(B.class)相反,我不知道它有什么问题。文档并没有说我们不能将两个不同的名称绑定到同一个类

@JsonInclude(Include.NON_EMPTY)
    @JsonIgnoreProperties(ignoreUnknown = true)
    @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type", visible = true, defaultImpl = B.class)
    @JsonSubTypes({@JsonSubTypes.Type(value = B.class, name = "B"),
            @JsonSubTypes.Type(value = A.class, name = "A"),
            @JsonSubTypes.Type(value = A.class, name = "C")})
    public abstract class U implements Serializable {

    ...
    ...
    abstract Role getRole();

    @JsonProperty("type")
    String type;

    Getters and Setters

    }

    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    @JsonIgnoreProperties(ignoreUnknown = true)
    @JsonTypeName
    public class A extends U implements Serializable {
    ....
    public Role getRole() {
      String type = getType();
      switch(type) {

       case "A" :
                return Role.A;
       case "C" :
                return Role.C;
       default  :
                throw new RuntimeException();
      }
     }
   }
更多信息。取决于“A,C”类型。我确定角色


我得到了铸造错误,因为我期待类A被创建,但创建类B代替(默认的一个)。非常感谢您的帮助。谢谢。

这在新的Jackson 2.6版中应该可以使用,但对我来说不起作用。
getRole
中的
switch
语句试图重现通常应该通过键入/继承获得的行为。如果使用
类A{getRole(){return Role.A;},则会更干净
类C{getRole(){return Role.C;}
问题将自行消失。是的。这是一种更干净的方法。但是,我避免了这种情况,这样我就不会仅仅通过添加一个角色不同的C类而对整个存储库进行CRUD更改。我明确添加了jackson databind 2.6.2依赖项。我添加了gradle依赖项来显示依赖项树。它是拉入数据绑定依赖项。