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

使用官方Swagger API架构验证Swagger API声明

白永昌
2023-03-14

swagger规范存储库提供了描述有效Swagger 2.0 API定义的JSON模式。我想使用此模式来验证给定API定义文件是否有效,然后再尝试解释它。我使用以下代码使用Json.NET加载模式:

JsonSchema swaggerApiSchema;
using (var textReader = new JsonTextReader(new StreamReader(@"C:\path\to\schema.json")))
{
    swaggerApiSchema = JsonSchema.Read(textReader);
}

这将抛出一个 ArgumentException,报告“无法将数组转换为布尔值”。

模式文件有问题吗?这是Json的错误吗。NET,还是我只是做错了什么?

共有1个答案

符俊材
2023-03-14

根据文档,JSON.NET 实现了 JSON 架构草案 3。更多 这里.但是,您发布的 Swagger 架构是根据 JSON 架构草稿 4 创建的。JSON 架构的草稿 3 和草稿 4 之间的区别之一是必需属性,在 JSON 架构草稿 3 中,该属性是属性中子架构的属性。在 JSON 架构草稿 4 中,第一级关键字扮演相同的角色,并且有一个字符串数组作为参数。

JSON 架构草稿 3 的示例:

{
    "properties": {
        "Id": {
            "required": true,
            "type": "integer"
        },
        "FirstName": {
            "required": true,
            "type": "string",
        },
        "LastName": {
            "required": true,
            "type": "string
        }
    }
}

JSON模式草案4的示例:

{
    "properties": {
        "Id": {
            "type": "integer"
        },
        "FirstName": {
            "type": "string"
        },
        "LastName": {
            "type": "string"
        }
    },
    "required": [ "Id", "FirstName", "LastName" ]
}

请注意这两种模式的区别,即如何定义所需的属性。这就是为什么您会收到一个错误:“无法将数组转换为布尔值”。

这是Swagger JSON模式中所需属性的第一次出现,这导致了错误:

"required": [ "swagger", "info", "paths" ]

我建议用实现JSON模式草案4的解析器进行验证。

 类似资料:
  • 下面是XSD。 下面是xml文件。 当尝试使用http://www.utilities-online.info/xsdvalidation验证它时,我得到以下错误 第2行62:org.xml.sax.SAXParseException;行号:2;列号:62;CVC-ELT.1:找不到元素“Message”的声明。

  • 我对XML非常陌生,我面临着验证问题,如果我的XML和XSD文件结构良好,我也希望得到一些反馈。 在根据XSD验证XML时,我经常遇到错误- 下面的XML XSD 如果你发现其中任何一个有任何错误,请随时指出。它们都有从图案到最大长度的限制。 谢谢!!!!

  • 本文向大家介绍浅谈Android官方MVP架构解读,包括了浅谈Android官方MVP架构解读的使用技巧和注意事项,需要的朋友参考一下 综述 对于MVP (Model View Presenter)架构是从著名的MVC(Model View Controller)架构演变而来的。而对于Android应用的开发中本身可视为一种MVC架构。通常在开发中将XML文件视为MVC中的View角色,而将Act

  • 问题内容: 我找不到解决方案,发现更多人陷入同一问题,因此我将其发布在这里。 默认情况下,JAX-WS服务器(至少用于WebLogic)将不验证通过其关联架构接收到的消息。 由于任何无效值(错误的xsd:dateTime格式,数字字段中的字母等)都将导致Java对象(包括必填字段)中的 空 值,从而导致很多问题。 我需要做的是由服务器提供的简单验证。 由于某些原因,当我尝试使用提供的架构验证时,出

  • 我有一个如下的Json模式,当我在网上验证它时,比如http://jsonschemalint.com/draft4/#,它说它是有效的。我把“类型”改成了“对象”、“数组”、“字符串”,其余的结构保持不变。它仍然说是有效的模式。我的理解是当类型=对象时应该有“属性”,当类型=数组时应该有“项目”

  • 我试图为以下XML文档创建一个XML模式。https://www.nationalbanken.dk/_vti_bin/DN/DataService.svc/CurrencyRatesHistoryXML?lang=en 然后,我在记事本上安装了XML工具插件,并尝试重新验证模式中的XML文档。 要验证的XML 但当我尝试验证模式时,我收到以下验证错误: 使用XML架构验证当前文件:错误:元素'{