[错误]: 在 OpenAPI 3.1 中,明确的 @Schema(type = "number"|"integer"|"boolean") 会被转换为 "string"

作者: forhadmethun创建于 2026年7月15日更新于 2026年8月28日
标签Bugbacklog

□ 说明问题/问题

当生成**OpenAPI 3.1 ** 方案时,在某一财产上,一个明确的QQSchema(type = ". " )被错误地解决。 平面标注在“Schema”物体上正确,但“类型”套装有['弦''。 3.1序列器读取了类型'套件,因此,不管申报的类型如何,财产都作为类型:"字符串'排放出。

  • ** 目标:** 为DTO编写正确的OpenAPI 3.1文件,使用明确的QQSchema(类型=.)`。
  • ** 说明错误:** Schema'——一种明确的类型'="数字'整数'``'boolean'作为'字符串'发射。
  • ** 更正案件:** 依赖类型 * 推论* (在Schema ' 中没有明确的类型 ' ) 的属性序列化正确。 只有明确宣布的 " 型 " 才受到影响。
  • 框架: 复制在平地花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花纹-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花-花
  • ** 与实例无关:** 它在没有`实例'的字段上复制,因此与#5061/#5062(数字实例序列化)不同。
  • ** 下游:** 由此产生的光谱错误报告字段类型,打破基于OpenAPI的类型/客户生成(数字/以 " 字符串 " 生成)。

在OpenAPI 3.0 ("openapi31 = false")下,相同的DTO序列化正确,因此这是3.1代特有.

□ 受影响的版本

2.2.47 国家

Earlyst 版本的臭虫出现于( 如果已知) : 还没完全分开 在2.2.47中确认,在2.2.52中确认(提交时最新释放)。

□ 步骤重现

  1. 添加一个带有 QQSchema( type =.) 特性的 DTO, 并以 OpenAPI 3. 1 模式解决:

贾瓦 导入 io.swagger.v3.core.conver. 说明主题; 导入 io.swagger.v3.core.conver.Modelconvers; 导入 io.swagger.v3.core.conver.resolvedSchema; 输入 io.swagger.v3.core.conver. 导入 io.swagger.v3.core.util.Json31; 导入 io.swagger.v3.oas.anotations.media.schema; 进口java.math。 大十进制;

公共类 Repro { enum Freq {DAY,WEK,MONTH}(法语)

静态类 Dto { @Schema(title = "Inferred") 公共 BigDecimal 推断; // 没有明确的类型(控制) @Schema(标题="Amount",类型="数字") 公共大Decimal 金额; @Schema(标题="Count",类型="整数") 公共整数; @Schema (title = "Flag",类型为"boolean") 公共布尔旗帜; @Schema(标题="Unit") 公共Freq单位; // enum( 控制) {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

公用静态空白主机( String[] args) { 模型转换器 = 新模型转换器( 真); // openapi31 = 真 已解决计划 = 转换器.resolveAsresolvedSchema(新附加说明的Type(Dto.class));

// 根原因: scalar 类型正确,但"类型"集是 ["字符串"] 已解决.schema.get Properties (. for Each ((名, s) - > system.out.println(名称+" - > 得到Type ()=" + s.getType () + "获得Types ()=" + s.getTypes ()"); . . . . . . .

内容来源: swagger-api/swagger-core