代码之家  ›  专栏  ›  技术社区  ›  Vinz243

JsonSubTypes在序列化时不进行换行

  •  0
  • Vinz243  · 技术社区  · 7 年前

    我正在尝试制作一个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 回复  |  直到 7 年前
        1
  •  0
  •   Vinz243    7 年前

    结果我的ImageDescriptor的sizeConstraint getter被输入为 ISizeContraint 而不是 BaseSizeConstraint (其中包含子类型)