2013-07-08 1 views
24

json-schema를 사용하고 있으며이 파일에 선언 된 속성 만 유효성 검사를 통과하도록 허용하려고합니다. 예를 들어 사용자가 json 객체에 "name"속성을 전달하면 "name"이 여기에 속성으로 나열되지 않으므로이 스키마가 실패합니다.JSON 스키마에서 선언 된 속성 만 허용합니다.

나열된 속성 만 통과시킬 수있는 "필수"기능과 유사한 기능이 있습니까?

{ 
"$schema": "http://json-schema.org/draft-04/schema#", 
"title": "Accounting Resource - Add Item", 
"type": "object", 
"properties": { 
    "itemNumber": { 
     "type":"string", 
     "minimum": 3 
    }, 
    "title": { 
     "type":"string", 
     "minimum": 5 
    }, 
    "description": { 
     "type":"string", 
     "minimum": 5 
    } 
}, 
"required": [ 
    "itemNumber", 
    "title", 
    "description" 
] 

은}

+2

하더라도,이 발에 미래의 확장을 촬영처럼 보인다. –

+5

언제든지 앞으로이 속성을이 스키마에 추가 할 것입니다. – ipengineer

+1

@ipengineer - 연장을하고있는 사람은 * 당신 *이 * 일하는 (- 쉬) 것입니다. 또한 일부 사람들은 정적이라고 가정하는 자원을 변경한다는 것을 의미합니다. – cloudfeet

답변

3

FYI - 표준의 v5처럼 "ban unknown properties" 검증 모드를 설명합니다.

이 요구 사항을 형식 (Chris Pitman이 주석에서 말하는대로 확장성에 손상을줍니다)의 일부로 만드는 대신 유효성 검사기에 알 수없는 속성을 오류로 플래그를 지정하기 만하면됩니다. 그래서 이것은 dev에 유용한 매우 엄격한 검증 모드와 같습니다.

일부 유효성 검사기는 이미 지원이 (예를 들어 tv4) :

이 도구를
var result = tv4.validateMultiple(data, schema, checkRecursive, banUnknownProperties); 

, checkRecursive가 필요없이 데이터가 순환 참조가있을 수 있습니다, 그리고 banUnknownProperties 당신이 원하는 것을 정확히을 할 것입니다 경우에 사용한다 "additionalProperties":false을 사용하십시오.