我有这样的json架构:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"country": {
"type": "string",
"maxLength": 2,
"enum": ["aa", "bb"]
}
},
"required": [
"country"
]
}
}
这种格式的json:
[
{"country": "aa"},
]
我希望架构检查json文件是否包含枚举中列出的所有国家/地区:
[
{"country": "aa"},
{"country": "bb"},
]
有可能吗?
答案 0 :(得分:1)
你可以使用v5 / 6包含关键字:
{
"allOf": [
{ "contains": { "properties": { "country": { "constant": "aa" } } } },
{ "contains": { "properties": { "country": { "constant": "bb" } } } }
]
}
"constant": "aa"
是另一个v5 / 6关键字,与"enum": ["aa"]
相同。
目前Ajv支持这些关键字(一点自我推销)。
答案 1 :(得分:1)
对于那些不能使用@esp方便语法的人来说,这是一个旧式解决方案:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"country": {
"type": "string",
"maxLength": 2,
"enum": ["aa", "bb"]
}
},
"required": [
"country"
]
},
"allOf": [
{"not": {"items": {"not": {"properties": {"country": {"enum": ["aa"]}}}}}},
{"not": {"items": {"not": {"properties": {"country": {"enum": ["bb"]}}}}}}
]
}