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

4

我有以下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
    }
  }
]

如果名称唯一性不重要,我建议使用ID作为对象键,然后将对象列表转换为对象。可以在此处查看示例:https://dev59.com/qarka4cB1Zd3GeqPhrK1#51987954 - TakingItCasual
关键字需要是唯一的。将ID重命名为值以强调它不起ID作用。 - Hollerweger
1个回答

2
没有标准的JSON Schema关键字可以表达这个验证需求。 Ajv(适用于JavaScript)有一个自定义关键字“uniqueItemProperties”(在ajv-keywords包中),可以实现您所要求的功能。
您可以将其提议给下一个版本的标准。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接