【发布时间】:2020-05-06 23:32:35
【问题描述】:
我正在尝试为我的序列化类编写一个 JUNIT。我用于 jackson 的版本是 jackson-databind-2.10.2 我的具体类扩展和抽象类。当我运行 JUNIT 时出现异常,尝试解析 [simple type,ReshipInfo] 的子类型时缺少类型 id:缺少类型 id 属性“类型” 下面是我要序列化的 JSON。我错过了什么。请帮忙。
{
"orderId" : "12345",
"orderDocumentType" : "SALES"
}
JUNIT 调用
InputStream is = this.getClass().getClassLoader().getResourceAsStream("samples/response.json");
String control = IOUtils.toString(is, Charsets.UTF_8);
ReshipInfo reshipInfo = objectMapper.readValue(control, ReshipInfo.class);
具体类
public class ReshipInfo extends AbstractRequest {
private Integer returnGracePeriod;
public ReshipInfo() {
}
public ReshipInfo(Builder builder) {
super(builder.orderDocumentType);
returnGracePeriod = builder.returnGracePeriod;
}
}
抽象类
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXISTING_PROPERTY,
property = "type",
visible = true)
@JsonSubTypes({
@JsonSubTypes.Type(value = ReshipInfo.class, name = "SALES")
})
public abstract class AbstractRequest {
@JsonProperty(value = "type")
private OrderDocumentType orderDocumentType;
}
【问题讨论】:
标签: java spring jackson marshalling junit5