2015-06-24 84 views
0

即使元素正在重複自身,JsonSchema驗證也會通過。該架構試圖防止相同使用「additionalProperties」爲假「maxProperties」爲1架構驗證無法驗證Json中的多個條目

我有以下重複字段之一的json文件。

{ 
    "stats": "56989", 
    "stats": "56989" 
} 

我想驗證這對下面的模式: -

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "id": "http://jsonschema.net#", 
    "type": "object", 
    "additionalProperties": false, 
    "maxProperties": 1, 
    "properties": { 
    "stats": { 
     "id": "http://jsonschema.net/stats#", 
     "type": "string", 
     "maxLength": 5, 
     "minLength": 5, 
     "additionalProperties": false, 
     "maxProperties": 1 
    } 
    }, 
    "required": [ 
    "stats" 
    ] 
} 

JSON的成功校驗架構。雖然我給maxProperties = 1,驗證通過。

請讓我知道如何檢查Json Schema中的重複元素。

回答

0

問題是您的測試JSON無效。 JSON中未定義對象中的重複屬性。第二次出現stats將被忽略,或者它會覆蓋第一次出現。但是,它最終只會出現一次stats。當你的測試數據被讀入內存時,它看起來像{ "stats": "56989" },因此驗證成功。

爲了測試additionalProperties和/或maxProperties,您的測試數據需要包含唯一密鑰。例如{ "stats", "56989", "foo": "bar" }將是一個合適的測試案例。