【问题标题】:Json schema validation: Unique key in json arrayJson 模式验证:json 数组中的唯一键
【发布时间】:2017-10-04 13:30:22
【问题描述】:

我有以下 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 作为对象键,并将对象列表转换为对象对象。可以在这里看到一个例子:stackoverflow.com/a/51987954/2868017
  • 密钥必须是唯一的。将 id 重命名为 value 以强调它不充当 id。

标签: json validation jsonschema


【解决方案1】:

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

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

您可以为该标准的下一个版本提出建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    相关资源
    最近更新 更多