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

如何为OpenAPI中的每个索引(即元组)定义一个JSON数组,并提供具体的项定义?

高溪叠
2023-03-14

我需要在OpenAPI中用数组定义一个JSON响应。数组始终包含2个项目,第一个始终是数字,第二个始终是字符串。

[1, "a"]    //valid
["a", 1]    //invalid
[1]         //invalid
[1, "a", 2] //invalid

我发现JSON模式通过在items中传递项目列表而不是单个对象(源代码)来支持这一点,但OpenAPI明确禁止这一点,并且只接受单个对象(源代码)。如何在OpenAPI中表达?

共有1个答案

艾凯捷
2023-03-14

OpenAPI 3.1与JSON模式2020-12完全兼容,包括prefixItems关键字(早期JSON模式草案中项的元组形式的新名称)。

你的例子可以定义为:

# openapi: 3.1.0

type: array
prefixItems:
  # The 1st item
  - type: integer
    description: Description of the 1st item
  # The 2nd item
  - type: string
    description: Description of the 2nd item
  # Define the 3rd etc. items if needed
  # ...

# The total number of items in this tuple
minItems: 2
maxItems: 2
additionalItems: false   # can be omitted if `maxItems` is specified

早期的OpenAPI版本没有描述元组的方法。您最多只能定义“一个由两个项目组成的数组,可以是数字或字符串”,但无法具体定义第一个和第二个项目的类型。但是,您可以在模式说明中提及其他约束。

# openapi: 3.0.0

type: array
items:
  oneOf:
    - type: integer
    - type: string
minItems: 2
maxItems: 2
description: >-
  The first item in the array MUST be an integer,
  and the second item MUST be a string.

 类似资料:
  • ==最终更新== http://plnkr.co/edit/WKRBB7?p=preview 因为我在表单中使用ngModel,所以我必须添加attribue。 我的错误是,我使用了与它的名称相同的值。 当我换到下面,我的问题就解决了。 ========== 对不起,我不记得为什么使用名称[$index]。名称而不是x。名字。 也许几年前,我在使用x.Name时遇到了一些错误,然后养成了使用索引的

  • 问题内容: 我有两个一维数组x和y,一个比另一个小。我试图找到x中y的每个元素的索引。 我发现有两种简单的方法可以做到这一点,第一种很慢,第二种需要占用大量内存。 记忆猪 是否有更快的方法或更少的内存密集型方法?理想情况下,搜索将利用以下事实:我们不是在列表中搜索一件事,而是在搜索许多东西,因此稍微适合并行化。如果您不假设y的每个元素实际上都在x中,则可获得加分。 问题答案: 正如Joe King

  • 这里的问题是什么?。我正在尝试实现图数据结构,使用邻接列表,通过使用来自util包的集合。这里 包含一些整数的LinkedList数组。LinkedList的每个元素都包含另一个类型为:node的LinkedList。 但在编译过程中,它表示不兼容类型。如何解决这个问题?

  • 在我的OpenAPI规范中,是否有可能将参数定义为对象,而不必定义其属性(匿名对象)?更具体地说,我希望我的应用编程接口能够接受这些匿名对象的数组。 这是我所拥有的,但是我在斯瓦格编辑器中得到了一个“无效参数定义”错误。 以下是错误:

  • 我的大脑正在融化。。。我正在努力实现以下目标: 我知道有多少个数组,每个数组有多少个元素。这些数字是动态的,但假设有:3个数组,每个数组中有18个元素。 例子: 现在我想得到所有三个数组的元素1的平均值,以及所有三个数组的元素2的平均值,以此类推。 最终结果应该是所有18个元素的平均值的一个数组。 比如: 如果3是固定的,这将起作用,但数组的数量是动态的。 希望这有意义...

  • 我是一名 Java 初学者,我一直在尝试编写一种方法来列出数组中某个 int 的所有索引。到目前为止,我所做的是将该 int 的值存储在另一个数组中的相应索引处,但我能做的最好的事情就是将所有其他不等于原始 int 的索引的值设置为 -1。 我想我需要在数组中存储值I,并删除所有的-1,但是我不知道怎么做。顺便说一下,这些值是-1,因为这个程序中所有的数组都包含0-100之间的整数。如果数组中的整