【发布时间】:2021-12-07 07:44:29
【问题描述】:
只有当 type 为 mobile 且 endDate 为空/null 时,下面的 json 才有效,否则验证需要失败。这里 type 可以有任何值,但我的验证仅在 mobile 类型上。
有效的 json:
{
"contacts": [
{
"type": "mobile",
"endDate": "",
"number": "1122334455"
},
{
"type": "home",
"endDate": "",
"number": "1111122222"
},
{
"type": "mobile",
"endDate": "12-Jan-2017",
"number": "1234567890"
},
]
}
无效的 json:(因为联系人没有有效的手机号码)
{
"contacts": [
{
"type": "mobile",
"endDate": "12-Jan-2021",
"number": "1122334455"
},
{
"type": "home",
"endDate": "",
"number": "1111122222"
},
{
"type": "mobile",
"endDate": "12-Jan-2017",
"number": "1234567890"
},
]
}
我尝试过的架构
{
"$schema": "https://json-schema.org/draft/2019-09/schema",
"type": "object",
"properties": {
"contacts": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"endDate": {
"type": [
"string",
"null"
]
},
"number": {
"type": "string"
}
},
"anyOf": [
{
"if": {
"properties": {
"type": {
"const": "mobile"
}
}
},
"then": {
"properties": {
"endDate": {
"maxLength": 0
}
}
}
}
]
}
}
}
}
任何人都可以为我提供上述 json 的正确模式,并附上示例代码 here,这是有效的 json,但出现错误。无效的 json 示例是 here 为什么因为移动类型没有空的 endDate。 提前致谢。
【问题讨论】:
-
你能告诉我你目前拥有的 JSON Schema 吗?当我看不到您的架构时,我很难提出解决方案,因为它可能不适合。
-
@Relequestual :我已经添加了我尝试过的内容,但没有达到我的预期。
-
Mods:这个问题应该被关闭,因为这个问题是一个错字,不太可能帮助其他人。我不能出于其他原因撤回我的投票以关闭并重新投票。
-
不,一点也不。您应该尽可能提供一个最小的、可重现的示例:stackoverflow.com/help/minimal-reproducible-example - 在修复您的复制粘贴错误时,我无法复制该问题。这是一个带有我建议的“解决方案”(修正错字)的工作演示:jsonschema.dev/s/LA432 - 如果您仍有问题,请告诉我它们是什么。
-
示例代码有错字,我们应该关闭问题,因为它不会帮助其他人。关闭问题时有一个特定的类别。
标签: json jsonschema json-schema-validator