如何生成jsonschema,以便它验证数组中的所有对象?

如何生成jsonschema,以便它验证数组中的所有对象?,json,jsonschema,Json,Jsonschema,我试图使用JSON模式验证JSON输入,但它的工作方式与我需要的不同 我有以下输入JSON(其中的一部分): 以及以下json模式(也是其中的一部分): 我希望验证失败,因为不允许使用“state”属性(由于的“additionalProperties”:false选项) 但是,我可以在数组的第二项中添加/更改任何内容,验证总是成功的。当我更改第一项中的任何内容时,验证失败(如预期的那样) 我错过了什么 谢谢你的帮助 JSON模式草案7状态 如果“items”是一个模式,那么如果 数组已根据该架

我试图使用JSON模式验证JSON输入,但它的工作方式与我需要的不同

我有以下输入JSON(其中的一部分):

以及以下json模式(也是其中的一部分):

我希望验证失败,因为不允许使用“state”属性(由于的“additionalProperties”:false选项)

但是,我可以在数组的第二项中添加/更改任何内容,验证总是成功的。当我更改第一项中的任何内容时,验证失败(如预期的那样)

我错过了什么


谢谢你的帮助

JSON模式草案7状态

如果“items”是一个模式,那么如果 数组已根据该架构成功验证

如果“items”是一个模式数组,那么如果每个元素 在同一位置对模式进行验证,如果 任何

在模式中,
items
是一个数组,这意味着您只将该数组中的子模式应用于实例数组的第一个元素。只需从
项中删除方括号
,子模式将应用于实例中的所有项

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "admin_state": {
        "type": "string",
        "default": "enabled",
        "enum": [
          "disabled",
          "enabled"
        ]
      }
    },
    "additionalProperties": false
  },
  "minItems": 1
}

现在完全有道理了,谢谢你的清晰解释。我刚刚测试了它,它工作得非常完美!欢迎对答案进行投票并接受它们=]如果您有任何问题无法在此处提问(或只是加入),也请随时加入JSON模式。[@Relequestual您为我节省了很多时间。在线模式生成器在所有地方都添加了方括号。
{
  "type": "array",
  "items": [
    {
      "type": "object",
      "properties": {
        "admin_state": {
          "type": "string",
          "default": "enabled",
          "enum": [
            "disabled",
            "enabled"
          ]
        }
      },
      "additionalProperties": false
    }
  ],
  "minItems": 1
}
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "admin_state": {
        "type": "string",
        "default": "enabled",
        "enum": [
          "disabled",
          "enabled"
        ]
      }
    },
    "additionalProperties": false
  },
  "minItems": 1
}