"我正在尝试使用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类(默认的)。任何帮助表示赞赏。感谢。