如何在OpenAPI(Swagger)中定义可以是字符串或null的属性?

如何在OpenAPI(Swagger)中定义可以是字符串或null的属性?,swagger,openapi,Swagger,Openapi,我有一个JSON模式文件,其中一个属性被定义为string或null: "type":["string", "null"] 当转换为YAML(用于OpenAPI/Swagger)时,它将变成: 类型: -“空” -串 但“招摇过市”编辑器显示了一个错误: 架构“类型”键必须是字符串 在OpenAPI中定义可空属性的正确方法是什么?这取决于OpenAPI版本 OpenAPI 3.1 您的示例在OpenAPI 3.1中有效,它与JSON模式2020-12完全兼容 类型: -“null”#注意“n

我有一个JSON模式文件,其中一个属性被定义为
string
null

"type":["string", "null"]
当转换为YAML(用于OpenAPI/Swagger)时,它将变成:

类型:
-“空”
-串
但“招摇过市”编辑器显示了一个错误:

架构“类型”键必须是字符串


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

这取决于OpenAPI版本

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

类型:
-“null”#注意“null”周围的引号
-串
#同
类型:['null',字符串]
上述内容相当于:


-键入:“null”#注意“null”周围的引号
-类型:字符串
OAS 3.0.x(见下文)中使用的
nullable
关键字在OAS 3.1中不存在,它被删除以支持
'null'
类型

OpenAPI 3.0.x 可为空的字符串定义如下:

类型:字符串
可为空:真
这与JSON模式语法不同,因为高达3.0.x的OpenAPI版本使用它们自己的(“扩展子集”)。区别之一是
类型
必须是单一类型,不能是类型列表。也没有
'null'
类型;相反,关键字用作
类型
修饰符,以允许
空值

OpenAPI 2.0 OAS2不支持
'null'
作为数据类型,因此您运气不好。只能使用
类型:string
。但是,有些工具支持将
x-nullable:true
作为供应商扩展,即使nulls不是OpenAPI 2.0规范的一部分

考虑迁移到OpenAPI v。3以获得对空值的正确支持。

相关:。