2016-03-02 95 views
0

我有一个JSON模式,我想通过JSON结构的之一的相关性进行更改。例如,如果{"foo":1}也包括{"fooBar":"number"}在架构中,导致{"foo":"number", "fooBar":"number"}但是如果{"foo":2}改为包括{"fooBar2":"bool", "fooBar3":"string"}导致{"foo":1, "fooBar2":"bool", "fooBar3":"string"}。这可能吗。创建JSON模式值依赖关系

我知道如何使包含一个关键更改模式(代码示例here),但我无法找到任何关于如何使用值可以完成的示例。如果这甚至是可能的。

​​

回答

2

它可以完成,但它有点复杂。以下是一般模式。

{ 
    "type": "object", 
    "anyOf": [ 
    { 
     "properties": { 
     "foo": { "enum": [1] }, 
     "fooBar": { "type": "number" } 
     } 
    }, 
    { 
     "properties": { 
     "foo": { "enum": [2] }, 
     "fooBar2": { "type": "boolean" }, 
     "fooBar3": { "type": "string" } 
     } 
    } 
    ] 
}