我尝试在Springboot应用程序中实现RestController的端点。我希望我会得到这样的邮政请求:
{
order: [
{
name: "Product1",
type: "Fresh",
expiryPeriod: "10"
},
{
name: "Product2",
type: "Frozen",
manufacturingDate: "2017-03-08",
storageTemp: "-40"
}
]
}
因此,我有抽象的类产品和2个子类:Freshproduct和Frozenproduct。问题是:如何获得@Responsebody的List<Product>
?
在yout抽象类中设置类型:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(value = FreshProduct.class, name = "fresh"),
@JsonSubTypes.Type(value = FrozenProduct.class, name = "frozen")}
)
@Data
static abstract class AbstractProduct {
String name;
String type;
}
并在您的子类中设置类型名称:
@JsonTypeName("fresh")
static class FreshProduct extends AbstractProduct {
}
@JsonTypeName("frozen")
static class FrozenProduct extends AbstractProduct {
}
有关Jackson-Antotations的更多信息:https://www.baeldung.com/jackson-annotations