我目前正在为一些数据起草JSON模式。假设我的架构是这种形式:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Title",
"type": "array",
"items": {
"type":"object",
"properties":{
"property1": {
"type": "string",
"enum": ["ALPHA", "BETA"]
},
"property2": {
"type": "string",
"enum": ["alpha", "beta"]
},
"val": {
"type": "number",
"min": 0,
"max": 100
}
},
"required": ["property1", "property2", "val"]
}
}
我的问题是,是否可以指定我们想要property1
和property2
值的所有可能组合(以任何顺序没有重复)? val
的值几乎肯定不会是唯一的。
我能想到的就是将"minItems": 4, "maxItems": 4,
添加到"items"
对象上方的架构中,但这只意味着我们最终会得到4个项目,并不保证它们是唯一的。
我不是要求任何人为我编写整个架构,只是寻找文档的指针,或简单的例子来推动我朝着正确的方向前进。
测试用例(包含以澄清我的观点)
由于缺少其中一种组合,这应该会失败
{"data":[
{
"property1": "ALPHA",
"property2": "alpha",
"val": 7
},{
"property1": "ALPHA",
"property2": "beta"
"val": 16
},{
"property1": "BETA",
"property2": "alpha"
"val": 12
}
]}
这应该会失败,因为其中一个组合会重复
{"data":[
{
"property1": "ALPHA",
"property2": "alpha"
"val": 73
},{
"property1": "ALPHA",
"property2": "beta"
"val": 72
},{
"property1": "BETA",
"property2": "alpha"
"val": 73
},{
"property1": "BETA",
"property2": "beta"
"val": 71
},{
"property1": "ALPHA",
"property2": "beta"
"val": 68
}
]}
这应该通过
{"data":[
{
"property1": "ALPHA",
"property2": "alpha"
"val": 26
},{
"property1": "ALPHA",
"property2": "beta"
"val": 26
},{
"property1": "BETA",
"property2": "alpha"
"val": 32
},{
"property1": "BETA",
"property2": "beta"
"val": 83
}
]}
这也应该通过
{"data":[
{
"property1": "ALPHA",
"property2": "beta"
"val": 15
},{
"property1": "BETA",
"property2": "alpha"
"val": 6
},{
"property1": "ALPHA",
"property2": "alpha"
"val": 65
},{
"property1": "BETA",
"property2": "beta"
"val": 37
}
]}
答案 0 :(得分:0)
枚举值可以是对象,您可以在对象级别使用它。
答案 1 :(得分:0)
我很确定它可以完成,但解决方案将是如此复杂和难以理解,以至于它不值得做。在您的情况下,我无法确切知道,但通常情况表明您在设计数据结构方面的选择很差。我会研究一下如何重组数据。