2016-07-27 92 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" 
    } 
}