如何在@RestController中获取子类数组的映射



我尝试在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

最新更新