JsonSubType没有序列化到适当的类

时间:2018-05-16 22:33:29

标签: java json jackson jackson-databind

"我正在尝试使用JsonInclude和SubType进行序列化和反序列化。当我将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"。我确定了这个角色。

我收到了Casting错误,因为我希望创建A类但是创建了B类(默认的)。任何帮助表示赞赏。感谢。

0 个答案:

没有答案