架构验证未验证 Json 中的多个条目

Schema Validation not validating mutiple entries in Json

Json架构验证通过,即使元素在重复。该架构尝试使用 "additionalProperties" 作为 false"maxProperties" 作为 1.

来防止相同的情况

我有以下 json 文件,其中一个字段重复。

 {
  "stats": "56989",
   "stats": "56989"
}

我尝试根据以下模式对此进行验证:-

  {
  "$schema": "http://json-schema.org/draft-04/schema#",
  "id": "http://jsonschema.net#",
  "type": "object",
  "additionalProperties": false,
  "maxProperties": 1,
  "properties": {
    "stats": {
      "id": "http://jsonschema.net/stats#",
      "type": "string",
      "maxLength": 5,
      "minLength": 5,
      "additionalProperties": false,
      "maxProperties": 1
    }
  },
  "required": [
    "stats"
  ]
}

json 根据架构成功验证。虽然我给出 maxProperties=1,但验证通过了。

请告诉我如何检查 Json 模式中的重复元素。

问题是您的测试 JSON 无效。 JSON 中未定义对象中的重复属性。 stats 的第二次出现将被忽略或覆盖第一次出现。但是,最终,stats只会出现一次。当您的测试数据被读入内存时,它看起来像 { "stats": "56989" },因此验证成功。

为了测试 additionalProperties and/or maxProperties,您的测试数据需要包含唯一键。例如 { "stats", "56989", "foo": "bar" } 将是一个合适的测试用例。