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

具有命名元素数组的Swagger模型

卫飞鹏
2023-03-14

对我来说,为json数组编写swagger模型似乎非常简单,例如,如果我有这个数组:

[
  {
    "name": "dave",
    "number": 123
  },
  {
    "name": "mary",
    "number": 456
  }
]

我会为它写以下大摇大摆的模型

"schema": {
  "type": "array",
  "items": {
    "$ref": "Student"
  }
}

"Student": {
  "id": "Student",
  "required": [
    "name",
    "number"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "number": {
      "type": "integer",
      "format": "int32"
    }
  }
}

然而,我有以下几点:

{
  "123": {
    "name": "dave"
  },
  "456": {
    "name": "mary"
  }
}

我如何为这一个写模型?

提前谢了。

共有1个答案

朱乐逸
2023-03-14

要描述请求模型,需要使用additionalproperties属性。请注意,这在Swagger2.0中是可用的,在早期版本中是不可用的。

"definitions": {
    "Student": {
        "type": "object",
        "required": [ "name" ],
        "properties": {
            "name": {
                "type": "string"
            }
        }
    },
    "Students": {
        "type": "object",
        "additionalProperties": {
            "$ref": "#/definitions/Student"
        }
    }
}

上面您可以看到student模型,该模型目前包含“name”属性,不过我假设您还会向其添加更多内容。从上面的示例来看,“name”属性是必需的。

第二个模型是students,它是一个包含映射(additionalProperties)的对象。每个属性都是student类型(通过引用模型完成,但理论上可以内联定义)。

您不能做的一件事是声明键(或属性名)是整数或给定类型。patternedproperties可以支持这一点,但在Swagger2.0中没有。换句话说,没有限制密钥内容的技术方法。

 类似资料:
  • 我被困在创建一个具有键和数组值的模型上。但是我无法得到我预期的结果。指导我如何达到预期效果

  • 问题内容: 我的文件很大,预计约为12 GB。我想将它们全部加载到功能强大的具有16 GB RAM的64位计算机上的内存中,但是我认为Java不支持那么大的字节数组: Java有可能吗? Eclipse编译器的编译错误是: javac给出: 问题答案: Java数组索引的类型(4个字节或32位),因此恐怕您的数组只能使用2 31 − 1或2147483647个插槽。我将数据读入另一个数据结构,例如

  • 我被一件简单的事情困住了。我有一个名为“tags”的布尔值数组能够通过布尔值访问数组的每个元素对我来说很重要: 我传入trackTags数组并将布尔值赋给它(比如说[true,true,true,false])。因此,当我调用trackTags[0]时,我得到了“true”但是,当我打印“Energy”(能量)时,它应该与trackTags(0)相同,该值始终为false。我知道booleans

  • 本文向大家介绍F# 歧视工会中元组的命名元素,包括了F# 歧视工会中元组的命名元素的使用技巧和注意事项,需要的朋友参考一下 示例 定义区分联合时,可以命名元组类型的元素,并在模式匹配期间使用这些名称。 另外,命名已区分的并集的元素可以提高代码的可读性以及与C#的互操作性-提供的名称将用于属性的名称和构造函数的参数。互操作代码中默认生成的名称为“ Item”,“ Item1”,“ Item2” ..

  • 我有几个关于JAXB编组的简单问题。我正在尝试封送包含以下字段的类: 只需使用以下序列化代码: 我得到的输出是: 现在,我面临的问题如下: > 我想要名称空间xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“出现在根元素中,即TokenRestrictionTemplate中,而不是单个子元素中。如何实现这一点? 我有一些元素,例如带有@Xm

  • 问题内容: 此Python代码: 引发此错误信息: 谁能告诉我该怎么办才能解决上面破碎的代码中的问题,以便停止抛出错误消息? 编辑: 我做了一个打印命令来获取矩阵的内容,这就是它打印出来的内容: 对我来说,这看起来像是5行乘13列的矩阵,但是当通过脚本运行不同的数据时,行数是可变的。使用我要添加的相同数据。 编辑2:但是,脚本抛出错误。因此,我认为您的想法不能解释此处正在发生的问题。谢谢你 还有其