我有JSON模式文件,其中一个属性被定义为string或null:
"type":["string", "null"]
Run Code Online (Sandbox Code Playgroud)
转换为YAML(与OpenAPI/Swagger一起使用)时,它变为:
type:
- 'null'
- string
Run Code Online (Sandbox Code Playgroud)
但Swagger编辑器显示错误:
架构"类型"键必须是字符串
在OpenAPI中定义可空属性的正确方法是什么?
如何将属性指定为null或引用?讨论如何使用jsonschema将属性指定为null或引用.
我希望以昂首阔步的方式做同样的事情.
回顾上面的答案,使用jsonschema,可以这样做:
{
"definitions": {
"Foo": {
# some complex object
}
},
"type": "object",
"properties": {
"foo": {
"oneOf": [
{"$ref": "#/definitions/Foo"},
{"type": "null"}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
答案的关键是使用oneOf.
我的问题的关键点:
我有一个复杂的对象,我想保持DRY,所以我把它放在一个定义部分,以便在我的swagger规范中重用:其他属性的值; 响应对象等
在我的规范中的各个地方,属性可能是对此类对象的引用或为null.
如何使用不支持的Swagger oneOf或
anyOf?
注意:一些swagger实现使用x-nullable(或某些)指定属性值可以为null,但是,$ref 用它引用的内容替换该对象,因此它将显示任何使用x-nullable被忽略.