我正在尝试构建一个代表以下资源的json架构:
X resource:
{
"type" : "{some enum of types}",
<some list of properties that depend on the enum>
}
以下是一些(不是真实的)示例:
{
"type" : "car",
"color" : "red",
"style" : "van"
}
{
"type" : "plane",
"color" : "white",
"aisle" : "double"
}
如您所见,aisle
属性仅在type
为plane
时适用,而style
属性仅在type
为{时适用{1}}。属性car
很常见。
我能够得到这样的东西:
color
但这仅适用于X schema:
{
"$schema" : ...
...
"properties" : {
"type" : {...},
"color" : {...}.
"sub_properties" : {
"type" : "object",
"oneOf" : [ ... ]
}
}
}
的{{1}}属性。也就是说,以下是json:
sub_properties
我无法弄清楚如何解除&#34; X
以便它直接应用于{
"type" : "car",
"color" : "red",
"sub_properties" : {
"style" : "van"
}
}
的属性。
有办法做到这一点吗?
答案 0 :(得分:0)
从你的文字我可以理解两件事:
如果您有一个枚举,并且想要定义限制枚举值的类型,那么您唯一的选择是使用枚举属性,并使用它来按值选择模式。 as it is explained here。
如果您只想为X设置替代模式,可以直接定义:
&#34; X Schema&#34;:{&#34; oneOf&#34;:[{&#34; id&#34;:&#34; schema1&#34;},{&#34; id& #34;:&#34; SCHEMA2&#34;}]}