【发布时间】:2017-12-30 01:00:42
【问题描述】:
鉴于此架构:
{
"type": "object",
"patternProperties": {
"^(.*)$": {
"type": "object",
"patternProperties": {
"^.*$": {
"oneOf": [
{
"type": "string",
"enum": ["Token1", "Token2", "Token3"]
}
]
}
}
}
}
}
我能够验证此类数据:
{
"myobject": {
"prop1": "Token1",
"prop2": "Token2",
"prop3": "Token3"
},
"anotherobject": {
"otherprop1": "Token1",
"otherprop2": "Token3"
}
}
即顶级对象下的每个属性值都应该在["Token1", "Token2", "Token3"] 枚举中。如果我将Token4 设置为值,它会按预期失败。
是否可以匹配捕获组^(.*)$ 模式的值并在oneOf 下添加另一条规则,这意味着:或者该值位于(顶级)对象名称集中?要成功验证这样的事情:
{
"myobject": {
"prop1": "Token1",
"prop2": "Token2",
"prop3": "Token3"
},
"anotherobject": {
"otherprop1": "myobject", <- note this
"otherprop2": "Token3"
}
}
但失败了
{
"myobject": {
"prop1": "Token1",
"prop2": "Token2",
"prop3": "Token3"
},
"anotherobject": {
"otherprop1": "non-existing-object", <- note this
"otherprop2": "Token3"
}
}
并且最好/可选地检查基本递归以使该输入失败:
{
"myobject": {
"prop1": "Token1",
"prop2": "Token2",
"prop3": "Token3"
},
"anotherobject": {
"otherprop1": "anotherobject", <- note this
"otherprop2": "Token3"
}
}
【问题讨论】:
标签: json jsonschema json-schema-validator