[错误]:从架构注释中读取类型时的兄弟关系逻辑不正确
import io.swagger.v3.core.converter.AnnotatedType; import io.swagger.v3.core.converter.ModelConverters; import io.swagger.v3.core.converter.ResolvedSchema; import io.swagger.v3.core.util.Json31; import io.swagger.v3.oas.annotations.media.Schema; import java.math.BigDecimal; public class Repro { enum Freq { DAY, WEEK, MONTH } static class Dto { @Schema(title = "Inferred") public BigDecimal inferred; // no explicit type (control) @Schema(title = "Amount", type = "number") public BigDecimal amount; @Schema(title = "Count", type = "integer") public Integer count; @Schema(title = "Flag", type = "boolean") public Boolean flag; @Schema(title = "Unit") public Freq unit; // enum (control) } public static void main(String[] args) { ModelConverters converters = new ModelConverters(true); // openapi31 = true ResolvedSchema resolved = converters.resolveAsResolvedSchema(new AnnotatedType(Dto.class)); // root cause: scalar type is correct, but the "types" set is ["string"] resolved.schema.getProperties().forEach((name, s) -> System.out.println(name + " -> getType()=" + s.getType() + " getTypes()=" + s.getTypes()); System.out.println(Json31.pretty(resolved.schema)); } }
内容来源: swagger-api/swagger-core