当前位置: 首页 > 知识库问答 >
问题:

如何在OpenAPI(Swagger)中定义一个可以是string或null的属性?

微生啸
2023-03-14

我有一个JSON模式文件,其中一个属性被定义stringnull:

"type":["string", "null"]

当转换为YAML(用于OpenAPI/Swagger)时,它变为:

type:
  - 'null'
  - string

在OpenAPI中定义可为null属性的正确方法是什么?

共有1个答案

赖明煦
2023-03-14

这取决于OpenAPI版本。

您的示例在OpenAPI 3.1中是有效的,它与JSON模式2020-12完全兼容。

type:
  - 'null'   # Note the quotes around 'null'
  - string

# same as
type: ['null', string]

以上相当于:

oneOf:
  - type: 'null'   # Note the quotes around 'null'
  - type: string
type: string
nullable: true

考虑迁移到OpenAPI V.3以获得对Null的适当支持。

 类似资料:
  • 我也想用昂首阔步做同样的事情。 为了总结以上问题的答案,使用jsonschema,可以这样做: 答案的关键点是使用之一。 注意:一些swagger实现使用(或类似的)来指定属性值可以为null,但是,用对象引用的内容替换对象,因此似乎忽略了对的任何使用。

  • 如何在OpenAPI/Swagger中定义一个字段是可选的或必需的,缺省的是什么?

  • 我要求在有效负载中有两个属性,比如属性1和属性2。两者都是数组类型。条件是,要么两者都可以有值,要么其中只有一个为非空。但两者不能同时为空。我如何在swagger规范中定义这个需求,这样我就可以实施模式,使得两者都不应该为空,但是其中任何一个都可以为空。 有效示例: 无效示例:

  • 我使用swagger生成类在Java和类型脚本。我有问题定义映射属性与对象列表为值。我试图定义如下: 上面的yml定义在java中生成以下代码: 如何配置yml以生成包含数据列表的密钥?类似于下面的类: 或 这是否可能与大摇大摆2.0?我正在考虑定义另一个扩展ArrayList的DataList类,然后将该类用作映射的值。 --------------更新 谢谢@nickb 我使用swagger-

  • 我正在为一个api创建一个OpenAPI 3规范,该API具有需要某些属性的对象,对于某些属性,它们是任何对象。当我创建如下规范时,它会抛出一个错误,我无法修复。 Swagger编辑器给出了如下错误 - 在使用如下建议时 验证错误消失了,但swagger编辑器模式/模型视图未显示任何内容,如下所示 -