【发布时间】:2019-08-05 12:17:23
【问题描述】:
我的 API 是使用 Swagger OAS3 记录的。我有一个使用 YAML 定义的属性:
LoanAmount:
type: number
nullable: true
我可以从 swagger 导出的结果 JSON 如下所示:
"LoanAmount": {
"type": "number",
"nullable": true
},
当我使用jsonschemavalidator 进行验证时,架构为:
{
"title": "A JSON Schema for OpenAPI 3.0.",
"id": "http://openapis.org/v3/schema.json#", "$schema":
"http://json-schema.org/", "type": "object",
"properties": {
"LoanAmount": {
"type": "number",
"nullable": true}
}
}
输入为:
{
"LoanAmount" : null
}
验证失败
“无效的类型。预期的数字,但得到了 Null”
我可以使用:
"LoanAmount": {
"type": ["number","null"]
}
但是,我无法弄清楚如何使用 OAS3 YAML 以这种方式定义它。我的目标是不必在 swagger hub 之外维护一个单独的模式来满足我对 API 中许多字段的可空要求。
A swagger docs page 描述 OAS3“使用 JSON Schema Specification Wright Draft 00(又名 Draft 5)的扩展子集来描述数据格式......”
Json.Net Schema 文档说“支持 100% 的 JSON Schema Draft 6 并向后兼容旧版本”
我的假设是 OAS3 可空属性是扩展的子集功能之一,而不是任何 JSON 架构草案的一部分,但在继续之前我正在寻找对此的确认。
【问题讨论】:
-
已确认。
nullable不是 JSON Schema 关键字。
标签: json.net swagger jsonschema openapi