如何防止 swagger 核心解析 Jackson 注释?

问题描述 投票:0回答:1

我有一个 FormTemplateElement 类,它有几个子类型。我希望仅使用 @Schema 注释来生成模式。然而 Swagger 也在解析 Jackson 注释。有没有办法防止这种情况发生?

我想使用 Jackson 注释进行序列化和反序列化目的,这就是为什么我无法删除它。

我正在使用 SpringDoc 版本 2.3.0 和 Jackson 版本2.16.0

@Schema(
        discriminatorProperty = "formTemplateElementType",
        name = "FormTemplateElement",

        discriminatorMapping = {
                @DiscriminatorMapping(value = "ShortTextFormElement", schema = ShortTextFormElement.class),
                @DiscriminatorMapping(value = "LongTextFormElement", schema = LongTextFormElement.class),

        },
        subTypes = {
                ShortTextFormElement.class,
                LongTextFormElement.class,

        }
)
@JsonTypeInfo(
        use = JsonTypeInfo.Id.NAME,
        property = "formTemplateElementType",
        visible = false
)
@JsonSubTypes(

        {
        @JsonSubTypes.Type(value = ShortTextFormElement.class),
        @JsonSubTypes.Type(value = LongTextFormElement.class),
})
@JsonIgnoreProperties(ignoreUnknown = true)
public abstract class FormTemplateElement {
    @NotEmpty
    UUID id;

    @NotEmpty
    FormTemplateElementType formTemplateElementType;

    @NotEmpty
    Boolean isRequired;

    @NotEmpty
    Boolean isHidden;
}
java jackson swagger springdoc
1个回答
0
投票

我想要解决方案的主要原因是我使用 OAS3 进行代码生成。 事实证明,在我的用例中使用 @JsonSubtypes 很难实现多态性(我正在使用 open-api cli 生成器来获取打字稿)。 我做了一个解决方法,当我使用 cli 生成代码时使用 @Schema 注释,而当我实际运行 Spring Boot 后端时使用 @JsonSubType。

© www.soinside.com 2019 - 2024. All rights reserved.