动态属性的json模式会根据;“类型”;
我正在尝试构建一个json模式,该模式表示以下资源:动态属性的json模式会根据;“类型”;,json,jsonschema,Json,Jsonschema,我正在尝试构建一个json模式,该模式表示以下资源: X resource: { "type" : "{some enum of types}", <some list of properties that depend on the enum> } 如您所见,过道属性仅在类型为平面时适用,样式属性仅在类型为汽车时适用。属性颜色是常见的 我已经能够得到这样的东西: X schema: { "$schema" : ... ... "properties" : {
X resource:
{
"type" : "{some enum of types}",
<some list of properties that depend on the enum>
}
如您所见,过道
属性仅在类型
为平面
时适用,样式
属性仅在类型
为汽车
时适用。属性颜色
是常见的
我已经能够得到这样的东西:
X schema:
{
"$schema" : ...
...
"properties" : {
"type" : {...},
"color" : {...}.
"sub_properties" : {
"type" : "object",
"oneOf" : [ ... ]
}
}
}
但这仅适用于X
的sub\u属性。即,以下json:
{
"type" : "car",
"color" : "red",
"sub_properties" : {
"style" : "van"
}
}
我不知道如何“提升”其中一个,使其直接应用于X
的属性
有什么方法可以做到这一点吗?从你的文章中,我可以理解两件不同的事情:
- 如果您有一个枚举,并且希望定义限制枚举值的类型,那么您唯一的选择就是使用枚举属性,并使用它能够按值选择架构
- 如果您只想为X提供备选模式,可以直接定义:
“X模式”:{“其中之一”:[{“id”:“schema1”},{“id”:“schema2”}]}
请发布您希望获得所需输出的代码和数据示例。我更新了问题。您能举一个如何使用此示例吗?这是否意味着我必须定义两个单独的模式并引用它们?我正在看schema4规范的第7.2节,但我不太清楚如何使其成为现实。看看这个示例:
{
"type" : "car",
"color" : "red",
"sub_properties" : {
"style" : "van"
}
}