我正在尝试创建一个复杂的JSON模式,尝试使用条件依赖项而无需访问OneOf,AnyOf等
我基本上试图结合
brew
和
const schema1 = {
type: "object",
properties: {
q1: {
type: "boolean",
enum: [false]
}
},
required: ["q1"]
}
进入一个模式const schema2 = {
type: "object",
properties: {
q1: {
type: "boolean",
enum: [true]
}
sq1: {
type: "boolean"
}
},
required: ["q1", "sq1"]
}
,因此如果combined_schema
的答案为真,则模拟需要sq1
答案的条件依赖项。
在JSON架构wiki中,我读到AnyOf会替换"架构"在类型"但是看一下这个例子我不确定如何在特定情况下使用它({" schema1":" here"}部分非常令人困惑。
https://github.com/json-schema/json-schema/wiki/anyOf,-allOf,-oneOf,-not
有人可以帮助我将维基示例应用于我的现实世界问题吗?
答案 0 :(得分:1)
您的答案不是有效的JSON架构的架构。您可以使用anyOf关键字执行此操作:
{
type: "object",
required: ["q1"]
anyOf: [
{
properties: {
q1: { enum: [false] } // no need for type here
}
},
{
properties: {
q1: { enum: [true] },
sq1: { type: "boolean" }
},
required: ["sq1"]
}
]
}
答案 1 :(得分:0)
我找到了答案。他们的关键是使用refs
{
"type": [
{"$ref": "#/schema1"},
{"$ref": "#/schema2"}
],
"schema2":{
"type": "object",
"properties": {
"q1": {
"type": "boolean",
"enum": [true]
},
"sq1": {
"type": "boolean"
}
},
"required": ["q1", "sq1"]
},
"schema1": {
"type": "object",
"properties": {
"q1": {
"type": "boolean",
"enum": [false]
}
},
"required": ["q1"]
}
}