JSON 架构 validation/unique 值

JSON schema validation/unique values

寻求一点指导......

我需要一个 JSON 模式来验证文档,确保“someKey”的值在 JSON 文档中是唯一的。

此 JSON 文档显示“someKey”为“key01”、“key44”和“key45”。

{
  "something01" : "value01",
  "something02" : "value02",
  "something03" : [
                   {
                     "someKey" : "key01",
                     "somethingElse" : "placeholder value"
                   },
                   {
                     "someKey" : "key44",
                     "somethingElse" : "placeholder value"
                   },
                   {
                     "someKey" : "key45",
                     "somethingElse" : "placeholder value"
                   }
                 ]
}

本文档显示“someKey”的值为“key01”和“key01”(“key01”是一个副本)。

{
  "something01" : "value01",
  "something02" : "value02",
  "something03" : [
                   {
                     "someKey" : "key01",
                     "somethingElse" : "placeholder value"
                   },
                   {
                     "someKey" : "key01",
                     "somethingElse" : "placeholder value"
                   }
                 ]
}

并且此文档显示“someKey”为“key02”、“key05”、“key02”和“key02”(“key02”是一个副本)

{
  "something01" : "value01",
  "something02" : "value02",
  "something03" : [
                   {
                     "someKey" : "key02",
                     "somethingElse" : "placeholder value"
                   },
                   {
                     "someKey" : "key05",
                     "somethingElse" : "placeholder value"
                   },
                   {
                     "someKey" : "key02",
                     "somethingElse" : "placeholder value"
                   },
                   {
                     "someKey" : "key02",
                     "somethingElse" : "placeholder value"
                   }
                 ]
}

基本上我需要一些关于如何或是否可能编写一个 JSON 模式来验证第一个文档而不是其他文档的指导。

提前致谢

你不能用标准的 JSON Schema 来表达这个,但是有一个第三方词汇表为这种东西定义了一个 uniqueKeys 关键字。您可以在 https://gregsdennis.github.io/json-everything/usage/vocabs-unique-keys.html

找到文档
{
  "$schema": "https://gregsdennis.github.io/json-everything/meta/unique-keys",
  "type": "object",
  "properties": {
    "something01": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "someKey": { "type": "string" }
        }
      },
      "uniqueKeys": ["/someKey"]
    }
  }
}

据我所知,JSONEverything (C#) 是目前唯一支持该词汇表的实现。如果您使用其他东西,您可能需要请求更新实现以支持此关键字。否则,您需要在 JSON 模式之外验证此约束。