2016-07-27 60 views
2

我在两个数组都有模式中有两个属性。我想比较一下它们的长度是否相等。JSON Schema将两个属性比较为相等长度数组

例如:

schema.json

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "type": "object", 
    "properties": { 
    "thing": { 
     "type": "object", 
     "properties": { 
     "fields": { 
      "type": "array", 
      "items": {} 
     }, 
     "values": { 
      "type": "array", 
      "items": {} 
     } 
     }, 
     "required": ["fields", "values"] 
    } 
    } 
} 

data.json

{ 
    "thing": { 
    "fields:": ["age", "sex", "location"], 
    "values:": [25, "Male", "Cape Town"] 
    } 
} 

我想是比较该字段和值都在架构相同的长度。我会怎么做?

回答

3

在JSON模式中,所有验证关键字的作用域范围为其适用的值。换句话说,你不能根据另一个值来验证一个值。

如果您几乎以任何其他方式重构此结构,则不应该有任何问题。

例如,您可以使用关键字items的数组形式来定义对的列表。

{ 
    "thing": [ 
    ["age", 15], 
    ["sex", "Male"], 
    ["location", "Capetown"] 
    ] 
} 

或者,您可以使用关键字additionalProperties和使用对象,显示键/值对在一个更自然的方式。

{ 
    "thing": { 
    "age": 15, 
    "sex": "Male", 
    "location": "Capetown" 
    } 
}