【发布时间】:2014-11-03 23:05:11
【问题描述】:
是否可以在 JSON Schema 中使用替代方案?在 XSD 中,这可以使用 xs:alternative 元素来实现。
例如查看:How to use alternatives in XML Schema 1.1
更新 1:
这是我想使用 JSON 模式描述的示例 JSON:
{
"actions": [
{
"type": "basic",
"param1": "value"
},
{
"type": "extended",
"param1": "value",
"param2": "blah"
}
]
}
要求:
-
actions可以有任意数量的项目 -
basic动作必须包含param1属性 -
extended操作必须包含param1和param2属性
【问题讨论】:
-
我回答了一个通用的解决方案,但如果你提供一个具体的例子,评估一个解决方案可能会更容易。
-
@jruizaranguren 我已按要求添加了一个具体示例。
-
从您的示例中,您有一个基本类型(带有一个必需的 param1)和一个可选的 param2。您可以通过将 param1 和 param2 放入属性中来强制执行此操作,并将 param1 设置为 required。有关更复杂的示例,请查看答案中提供的关键字。
-
不,param2 不是可选的。这就是重点:当需要 type=extended param2 时。无论如何,谢谢你的提示,我会检查 oneOf 和其他选项。
-
两种类型的 param1 是否相同?我的意思是,存在一些缺乏继承?
标签: jsonschema