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

Json模式验证:Json数组中的唯一键,json,validation,jsonschema,Json,Validation,Jsonschema,我有以下JSON数据: [ { "unique1":{ "value":3 } }, { "unique2":{ "value":4 } } ] 每个数组项都有一个json对象和一个顶级唯一键。 当我尝试为它编写验证模式时,我只能验证完整数组是唯一的,而不能验证每个数组中的顶级键 { "$schema": "http://js

我有以下JSON数据:

[
  {
  "unique1":{
    "value":3
    }
  },
  {
  "unique2":{
    "value":4
    }
  }
]
每个数组项都有一个json对象和一个顶级唯一键。 当我尝试为它编写验证模式时,我只能验证完整数组是唯一的,而不能验证每个数组中的顶级键

{
  "$schema": "http://json-schema.org/draft-06/schema#",
  "type": "array",
  "uniqueItems": true,
  "items": {
    "type": "object",
    "patternProperties": {
      "^.*$": {
      }
    }
  }
}
以下JSON数据应无法验证:

[
  {
  "unique1":{
    "value":3
    }
  },
  {
  "unique1":{
    "value":4
    }
  }
]

没有标准的JSON模式关键字允许表达此验证要求

(对于JavaScript)有一个自定义关键字“uniqueItemProperties”(在包中),可以满足您的要求


您可以在下一版本的标准中使用它。

如果名称唯一性不重要,我建议使用ID作为对象键,并将对象列表转换为对象对象。这里可以看到一个例子:密钥必须是唯一的。将id重命名为值以强调它不作为id。