在 jdorn/json-editor 中的几个 属性 集合中进行选择

Choosing between several property sets in jdorn/json-editor

我在我的 JSON 模式中定义了两个不同的 属性 集,我正在尝试组合一个编辑器,允许用户从几个 属性 集中选择一个然后填写相应的属性。

这是我的架构:

{
    "type": "object",
    "title": "Test Configuration",
    "properties": {
        "master_property_set": {
            "title": "Testing oneOf",
            "oneOf": [
                {
                    "type": "object",
                    "title": "Property set 1",
                    "properties": {
                        "property1": {
                            "type": "string"
                        },
                        "property2": {
                            "type": "string"
                        }
                    }
                },
                {
                    "type": "object",
                    "title": "Property set 2",
                    "properties": {
                        "property3": {
                            "type": "string"
                        },
                        "property4": {
                            "type": "string"
                        }
                    }
                }
            ]
        }
    }
}

问题是,当我切换到 Property set 2 时,我的数据仍然包含 property1property2 作为空字符串,并且它们显示在编辑器中。他们应该被移除。我做错了什么?

可以在此处测试设置:http://goo.gl/j91of7

我在文档中找到了答案。原来编辑器的no_additional_properties 属性需要设置为true.

    {
      "type": "object",
      "title": "Test Configuration",
      "properties": {
        "master_property_set": {
          "title": "Testing oneOf",
          "oneOf": [
            {
              "type": "object",
              "title": "Property set 1",
              "properties": {
                "property1": {
                  "type": "string"
                },
                "property2": {
                  "type": "string"
                }
              },
              "additionalProperties":false
            },
            {
              "type": "object",
              "title": "Property set 2",
              "properties": {
                "property3": {
                  "type": "string"
                },
                "property4": {
                  "type": "string"
                }
              },
              "additionalProperties":false
            }
          ]
        }
      }
    }