我需要为JSON定义一个JSON模式,在该JSON中,字段/键被称为前一个字段的值。例子:
{
"key1": "SOME_VALUE",
"SOME_VALUE": "..."
}
{
"key1": "ANOTHER_VALUE",
"ANOTHER_VALUE": "..."
}
此外,第二个字段应该在必填字段中。 我一直在环顾四周,但不确定JSON模式是否提供此类功能。也许一些高级语义检查?
感谢您的帮助
答案 0 :(得分:0)
唯一的方法是提前知道值,但看来这对您来说是不可能的。这需要在业务逻辑验证中,而不是在格式验证中。
答案 1 :(得分:0)
因此,由于Relequestual的建议,我设法找到了解决方案。
约束:“ key1”的可能值必须是有限的,并且必须事先知道
假设我们需要一个用于验证JSON的JSON模式:
这可以通过以下模式完成:
"oneOf": [
{
"required": [
"required_simple_property1",
"required_simple_property2",
"value1"
],
"properties": {
"key1": {
"type": "string",
"const": "value1"
}
}
},
{
"required": [
"required_simple_property1",
"required_simple_property2",
"value2"
],
"properties": {
"key1": {
"type": "string",
"const": "value2"
}
}
},
{
"required": [
"required_simple_property1",
"required_simple_property2",
"value3"
],
"properties": {
"key1": {
"type": "string",
"const": "value3"
}
}
}
],
"properties": {
"required_simple_property1": {
"type": "string"
},
"required_simple_property2": {
"type": "string"
},
"value1": {
... (anything)
},
"value2": {
... (anything)
},
"value3": {
... (anything)
},
}