有什么方法可以在JSON中编码一个值,它是一组预定义类之一,还有特定于类的属性?我还要求使用json-schema完全验证格式(包括不存在不需要的属性)。
一个例子是:它是具有特定半径的球体,或具有特定尺寸的立方体。
此示例的可能编码是:
{"class": "sphere", "sphereRadius": 1.6}
{"class": "cube", "cubeSizeX": 1, "cubeSizeY": 2, "cubeSizeZ": 3}
但我不知道是否可以定义一个描述上述格式的json模式。当且仅当sphereRadius
等于“sphere”时,我才需要指定class
必须存在。
我打算在组合json-editor [1]中使用它,它将构建基于模式的用户界面。结果应该类似于选择类的下拉菜单,以及输入特定于类的信息的一组字段。
答案 0 :(得分:1)
您可能需要oneOf
,其中每个选项都有例如:
"properties": {
"class": {"enum": ["sphere"]}
}
以及任何特定于球体的约束。您描述的下拉界面听起来像是"oneOf"
子句的良好表示,因此适合。