json - 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"
}
]
}
本文档显示了值为“key01”和“key01”的“someKey”(“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"]
}
}
}
据我所知,JSON Everything (C#) 是目前唯一支持这个词汇表的实现。如果您使用其他东西,您可能需要请求更新实现以支持此关键字。否则,您需要在 JSON Schema 之外验证此约束。
推荐阅读
- c++ - “NUL”字符(“\0”)字节是分开的还是用字符串分配给那个字符数组?
- c++ - 以下语法是否将基本类型视为整数?
- c# - 为什么我在尝试使用 AutoMapper 时会出现异常?
- python - 如何在熊猫中将随机长度的列表转换为数据框?
- scala - 在 Spark 中,我无法按现有列进行过滤
- asynchronous - 带有四个嵌套循环的异步等待
- android - 使用观察者模式 android 应用程序关注取消关注提要
- php - laravel中一对多关系的问题
- php - 当您有重复的子字符串时如何正确替换字符串?
- javascript - 意外的令牌 '<' React Webpack 构建