我有一个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;
}
字符串
1条答案
按热度按时间zvokhttg1#
我想要一个解决方案的主要原因是我使用OAS 3进行代码生成。在我的用例中使用@JsonSubtypes很难实现多态性(我使用open-api脚本生成器获取类型脚本)。我做了一个变通方案,当我使用脚本生成代码时使用@Schema注解,当我实际运行spring Boot 后端时使用@JsonSubType。