Json 模式验证:json 数组中的唯一键

Hol*_*ger 5 validation json jsonschema

我有以下 JSON 数据:

[
  {
  "unique1":{
    "value":3
    }
  },
  {
  "unique2":{
    "value":4
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

每个数组项都有一个 json 对象,该对象具有一个顶级唯一键。当我尝试为其编写验证模式时,我只能验证整个数组是否唯一,而不能验证每个数组中的顶级键。

{
  "$schema": "http://json-schema.org/draft-06/schema#",
  "type": "array",
  "uniqueItems": true,
  "items": {
    "type": "object",
    "patternProperties": {
      "^.*$": {
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

以下 JSON 数据应该无法验证:

[
  {
  "unique1":{
    "value":3
    }
  },
  {
  "unique1":{
    "value":4
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

esp*_*esp 2

没有标准的 JSON Schema 关键字可以表达此验证要求。

Ajv(用于 JavaScript)有一个自定义关键字“uniqueItemProperties”(在ajv-keywords包中)可以满足您的要求。

您可以将其建议用于该标准的下一版本。