我正在寻找一种解决方案,以解决Swagger(OpenAPI(数据类型和JSON Schema之间处理数据类型空值的不兼容问题。
我们的swagger文件包括我们所有的模式定义,我想在API测试中使用JSON.NetSchema进行模式验证步骤。
有效的招摇特性定义:
"description": {
"type": "string",
"nullable": true
}
将无法通过空值的JSON架构验证(Invalid type. Expected String but got Null
(。
如果我将可为null的属性定义替换为:
"description": {
"type": ["string", "null"]
}
null值的验证将是成功的,但这打破了swagger语法。
Structural error at components.schemas.CalendarFunctionsDto.properties.description_EN.type
should be equal to one of the allowed values
allowedValues: array, boolean, integer, number, object, string
我找不到适用于.NET的OpenAPI模式到JSON模式转换器。我正试图弄清楚是否有一个简单的解决方案可以使用JSON.NET模式来解决这个问题。我们的一些类型比上面的例子更复杂。我正在寻找一种适用于所有人的解决方案;可以为null";类型。
理想情况下,我希望为输入保留有效的swagger(OpenAPI 3.0(JSON语法,以编程方式在C#中为所有可为null的属性执行一些拼写(转换模式,或调整验证,或任何其他创造性的解决方案(,然后使用JSON.Net模式验证模式。
Openapi 3.0.0/3.0.1/3.0.2/3.0.3不支持null类型,只支持nullable。JSON架构不支持null,它支持null类型。你能把你的规范更新到Openapi v3.1.0吗?该版本支持null类型。然后您可以使用以下选项之一:
选项1(不太可能在openapi工具中工作,因为类型数组是一个新添加(
"description": {
"type": ["string", "null"]
}
选项2(更可能使用openpi工具,因为类型不是数组(
"description": {
"oneOf" [
{"type": "string"},
{"type": "null"},
]
}