Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态属性的json模式会根据;“类型”;_Json_Jsonschema - Fatal编程技术网

动态属性的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" : {

我正在尝试构建一个json模式,该模式表示以下资源:

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"
  }
}