序列化时JsonSubTypes不换行

时间:2018-12-20 10:26:17

标签: java json spring jackson

我正在尝试创建一个rest API,您可以在其中使用不同的模式(大小约束,调整,扩展,强制或调整大小)来控制图像的大小,每种模式都有不同的参数。这是我的课程图:

diagram

这是我的BaseSizeConstraint

@JsonTypeInfo(
        use = JsonTypeInfo.Id.NAME,
        include = JsonTypeInfo.As.WRAPPER_OBJECT
)
@JsonSubTypes({
        @Type(value = CoerceConstraint.class, name = "coerce"),
        @Type(value = ExtendConstraint.class, name = "extend"),
        @Type(value = AdaptConstraint.class, name = "adapt"),
        @Type(value = ResizeConstraint.class, name = "resize")
})
public abstract class BaseSizeConstraint implements ISizeConstraint {
}

当我尝试使用带有此主体的API将新的图像描述符添加到模板时:

{
    "name": "ImgResize",
    "missingImageBehavior": "Fail",
    "sizeConstraint": {
        "resize": {"height": 50, "width": 50 }
    }
}

它有效,但是我得到的响应却不同:

{
    "name": "ImgResize",
    "alias": null,
    "sizeConstraint": {
        "width": 50,
        "height": 50
    },
    "missingImageBehavior": "Fail"
}

如您所见,sizeConstraint不再包装,没有给出约束类型的指示...

1 个答案:

答案 0 :(得分:0)

结果是我的ImageDescriptor的sizeConstraint吸气剂的类型为ISizeContraint,而不是BaseSizeConstraint(包含子类型)