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 模式之外验证此约束。
寻求一点指导......
我需要一个 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 模式之外验证此约束。