json-schema를 사용하고 있으며이 파일에 선언 된 속성 만 유효성 검사를 통과하도록 허용하고 싶습니다. 예를 들어 사용자가 json 객체에 “name”속성을 전달하면 여기에 “name”이 속성으로 나열되지 않기 때문에이 스키마는 실패합니다.
나열된 속성 만 통과하도록 허용하는 “필수”와 유사한 기능이 있습니까?
{
"$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"
]
}
답변
답변
참고로 표준 v5는 “알 수없는 속성 금지” 유효성 검사 모드를 설명하는 것 같습니다 .
따라서이 요구 사항을 형식의 일부로 만드는 대신 (Chris Pitman이 의견에서 말했듯이 향후 확장 성을 손상시킵니다), 유효성 검사기 에게 알 수없는 속성을 오류로 플래그 하도록 지시 할 수 있습니다. 따라서 dev에 유용한 매우 엄격한 유효성 검사 모드와 같습니다.
일부 검증 인은 이미이를 지원합니다 (예 : tv4 ) :
var result = tv4.validateMultiple(data, schema, checkRecursive, banUnknownProperties);
이 도구를 checkRecursive
사용하면 데이터에 순환 참조가있을 수 있고를 사용하지 않고도 원하는 banUnknownProperties
작업을 정확하게 수행 할 수 있는 경우을 사용해야 "additionalProperties":false
합니다.