【发布时间】:2018-01-31 08:11:41
【问题描述】:
在jsonschema中,我们如何根据外部存在的字段值来使一些内部属性成为必需的。
在下面的例子中,
{
"type" : "a/b/c",
"args": {
"propA1": "",
"propA2": "",
"propB1": "",
"propC1": "",
"propC2": "",
"c1": "",
"c2": "",
"c3": ""
}
}
type 可以是a 或b 或c。 args 始终是必需的。
条件是,
-
propA1,propA2如果类型为a,则为必填项, -
如果类型为
b,则需要propB1并且, -
如果类型为
c,则propC1、propC2是必需的。
c1、c2 和 c3 始终是必需的
到目前为止,我所做的是,
"properties": {
"type": {"enum": ["a", "b", "c"]},
"args": {
"type": "object",
"properties": {
"propA1": {"type":"string" },
"propA2": {"type":"string" },
"propB1": {"type":"string" },
"propC1": {"type":"string" },
"propC2": {"type":"string" },
"c1": {"type":"string" },
"c2": {"type":"string" },
"c3": {"type":"string" }
}
"required": ["c1", "c2", "c3"]
}
"anyOf": [{
"type": {"enum": ["a"]}
// how to specify required for inner properties of args?
}, {
"type": {"enum": ["b"]}
}, {
"type": {"enum": ["c"]}
}]
},
"required": ["type", "args"]
这里我们如何在anyOf的每个对象中指定需要的内部属性而不重复公共属性?
【问题讨论】:
标签: jsonschema