我正在尝试使用JSON Schema创建一个结构,允许我定义一个包含枚举值的键值对象( options.json
),还有一个用于验证某个查询的查询模式( query.json
) . 为防止代码重复,我查询,我可能需要"value1"和"value2"匹配 . 所以我想要实现的是,我的查询只在 options.json
中将键定义为属性,但它应该接受 value1
作为值或 ["value1", "value2"]
作为值 .
// options.json
{
"id": "options.json",
"type": "object",
"properties": {
"option1": {
"type": "string",
"enum": [
"value1",
"value2",
"value3"
]
},
"option2": {
"type": "string",
"enum": [
"value4",
"value5",
"value6"
]
}
},
"required": []
}
现在来看一些样本数据:
// should be marked as valid
{
"option1": "value1"
}
// this as well
{
"option1": ["value1", "value2"]
}
// combination of the two also valid
{
"option1": "value1",
"option2": ["value5", "value6"]
}
// but this shouldn't
{
"option3": "doesn't exist"
}
我怎样才能实现这样的结构?
我能得到的最接近的东西就是这样,但它仍然意味着我必须手动定义选项中指定的每个键:
{
"properties": {
"option1": {
"anyOf": [
{
"$ref": "options.json#/properties/option1"
},
{
"type": "array",
"items": {
"$ref": "options.json#/properties/option1",
"uniqueItems": true
}
}
]
}
}
}