source

JSON 스키마에 선언된 속성만 허용

itover 2023. 3. 28. 21:41
반응형

JSON 스키마에 선언된 속성만 허용

저는 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"
]
}

이걸 이루기 위해 당신이 해야 할 일은additionalProperties거짓으로.사양은 이쪽

정의 내에서 다음을 제공합니다.

  • 모든 필수 필드"required": []
  • 및 세트"additionalProperties": false

데모:

없이."additionalProperties": false다음과 같습니다.

와 함께"additionalProperties": false다음과 같습니다.

참고로 표준의 v5는 "ban unknown properties" 검증 모드를 설명할 것으로 보입니다.

따라서 이 요건을 포맷의 일부로 하는 것이 아니라(Chris Pitman이 코멘트에서 말한 바와 같이 향후 확장성이 손상됨), 검증자에게 알 수 없는 속성에 오류로 플래그를 지정하도록 지시할 수 있습니다.즉, 개발 시 유용한 초강력 검증 모드와 같습니다.

일부 검증자는 이미 이를 지원하고 있습니다(tv4 등).

var result = tv4.validateMultiple(data, schema, checkRecursive, banUnknownProperties);

이 툴을 사용하여checkRecursive데이터에 순환 참조가 있을 수 있는 경우 사용해야 합니다.banUnknownProperties사용할 필요 없이 원하는 대로 실행할 수 있습니다."additionalProperties":false.

언급URL : https://stackoverflow.com/questions/17530762/only-allow-properties-that-are-declared-in-json-schema

반응형