JSON Schema 能否支持对特定索引处的数组项的约束

Bre*_*mir 3 jsonschema

良好的模式语言将允许对值约束进行高度控制。

然而,我对 JSON Schema 的快速印象是,不能超越指定一项必须是具有单一允许类型的数组;例如,人们无法明显指定第一个项目必须是一种类型,而第二个索引处的项目必须是另一种类型。这种观点是否有误?

mra*_*lin 5

是的,可以完成,下面是指定了前三个项目类型的数组示例:

{
    "type": "array",
    "items": [
      {
        "type": "number"
      },
      {
        "type": "string"
      },
      {
        "type": "integer"
      }
    ]
}
Run Code Online (Sandbox Code Playgroud)

当您验证架构时,第 1、第 2 和第 3 项需要与其类型匹配。

如果数组中有超过 4 个项目,则多余的项目没有指定类型,因此它们不会验证失败;只要每个项目的类型正确,项目数少于 3 个的数组也会验证。

上周我开始 json schema 时发现了源代码和一本很好的读物: Understanding JSON Schema(PDF 第 24 页中的数组部分)

PS:英语这不是我的第一个语言,如果有任何拼写、标点或语法错误,请告诉我