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

使用OpenAPI(swagger)JSON模式定义对空值进行模式验证

计寒
2023-03-14

我正在寻找一个解决方案来解决Swagger(OpenAPI)数据类型和JSON模式之间处理数据类型空值的不兼容性。

我们的swagger文件包含所有模式定义,我想使用JSON。Net模式,用于API测试中的模式验证步骤。

有效的swagger属性定义:

  "description": {
    "type": "string",
    "nullable": true
  }

将失败JSON模式验证空值(无效类型。预期字符串,但得到空值)。

如果我将可为空的属性定义替换为:

  "description": {
    "type": ["string", "null"]
  } 

对于空值,验证将是成功的,但这打破了昂首阔步的语法。

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

我找不到的OpenAPI模式到JSON模式转换器。网我想知道是否有一个简单的解决方案可以使用JSON。Net模式来解决这个问题。我们的一些类型比上面的例子更复杂。我正在寻找一种适用于所有“可空”类型的解决方案。

理想情况下,我希望为输入保留有效的swagger(OpenAPI 3.0)JSON语法,以编程方式为所有可为空的属性(转换模式、调整验证或任何其他创造性解决方案)在C#中执行一些拼写,然后使用JSON验证模式。Net架构。

共有1个答案

江雅懿
2023-03-14

Openapi 3.0.0/3.0.1/3.0.2/3.0.3不支持null类型,它只支持nullable。JSON模式不支持nullable,它支持null类型。你能把你的规范升级到Openapi v3吗。1.0? 该版本支持空类型。然后,您可以使用以下选项之一:

选项1(不太可能在openapi工具中工作,因为类型数组是这样一个新添加)

  "description": {
    "type": ["string", "null"]
  } 

选项2(更有可能使用openpi工具,因为类型不是数组)

  "description": {
    "oneOf" [
        {"type": "string"},
        {"type": "null"},
    ]
  }
 类似资料:
  • 早上好 我刚刚开始使用JSON,所以我知道这是一个非常基本的问题,有人能指出我在尝试验证下面的事件和问题ID方面的错误吗? id字段似乎已成功验证,但我的文件在尝试验证时失败。

  • 问题内容: 是否有任何PHP库可根据JSON模式验证JSON对象? 问题答案: 关于jsonschemaphpv,尽管它维护得不是很好,但是我们经常使用它并且可以正常工作。这是js验证程序的端口。它具有针对php和http://code.google.com/p/jsonschema/的完整测试套件。 猜猜是什么…它比js传递了更多的测试。至少在最后一次运行测试时。问题是该项目的结构不是很好,而且

  • 问题内容: 我正在为返回JSON对象的Java Web应用程序编写一些验收测试。我想验证返回的JSON是否针对架构进行了验证。有人可以为此建议任何工具吗? 问题答案: 该 JSON工具项目 (程序员指南)包括验证使用JSON模式的JSON文件的内容的工具。 另一种选择是使用Rhino验证运行(JavaScript) JSON Schema Validator 。

  • 我正在创建一个用于Postman的JSON模式,其中包含一些模式定义。我针对模式验证的JSON需要与模式定义之一匹配。 示例模式 JSON数据示例 此JSON根据模式进行验证,并正确标记为无效(因为需要字符串): 问题 此示例根据https://www.jsonschemavalidator.net/返回4个错误: 消息:JSON对“oneOf”中的任何模式都无效。模式路径:#/oneOf 我只对

  • 我尝试使用swagger来描述JSON API。到目前为止,它看起来不错,但我无法弄清楚如何使用anyOf结构在JSON答案中定义不同对象类型的数组。 以下JSOn模式是有效的,它应该描述一组文章和视频JSON对象: 有没有可能在摇摆不定中使这项工作发挥作用?

  • 问题内容: 我有一个JSON模式 我要在children属性中表示的是,它是具有相同精确模式的对象数组。这是描述它的正确方法吗? 问题答案: 使用您需要参考的架构 参见此处:http : //json-schema.org/latest/json-schema-core.html#anchor30