프로그래밍/Python

[python] JSON 검증 (validation)

채윤아빠 2021. 6. 19. 15:45
728x90
반응형

jsonschema를 이용하면 JSON 데이터가 원하는 형식 (schema)에 맞는지 확인하여 처리할 수 있습니다.

jsonschema를 이용하여 JSON 데이터를 확인하는 기본적인 방법은 아래와 같습니다.

from jsonschema import validate

# A sample schema, like what we'd get from json.load()
schema = {
    "type" : "object",
    "properties" : {
        "price" : {"type" : "number"},
        "name" : {"type" : "string"},
    },
}

# If no exception is raised by validate(), the instance is valid.
validate(instance={"name" : "Eggs", "price" : 34.99}, schema=schema)    
validate(
    instance={"name" : "Eggs", "price" : "Invalid"}, schema=schema,
)                                   # doctest: +IGNORE_EXCEPTION_DETAIL
""" result =>
jsonschema.exceptions.ValidationError: 'Invalid' is not of type 'number'

Failed validating 'type' in schema['properties']['price']:
    {'type': 'number'}

On instance['price']:
    'Invalid'
"""

위와 같이 validate() 함수에서 검증을 위하여 사용하는 JSON format를 직접 작성하는 것은 실제 JSON 데이터 컬럼이 많을 수록 신경써야할 것도 많고 일일이 직접 만드는 작업이 편하지 않습니다.

 

"genson"이라는 패키지를 이용하면 JSON 데이터로부터 schema를 생성할 수 있습니다. 여기에 range 및 maxlength 등을 적절학게 설정해 주시면 됩니다.

 

또는 http://jsonschema.net/ 사이트에 직접 schema를 생성할 JSON 데이터를 입력하여 생성할 수도 있습니다.
회원가입이 필요하지만, 구글 계정 등으로 간단하게 가입이 가능합니다.

http://jsonschema.net/ 사이트에 자동으로 생성된 스키마 정보를 실제 JSON 데이터에 맞게 수정하여 이용하시면 됩니다.


참고

https://github.com/mcchae/JSON-Schema/blob/master/JSON-API.md
https://json-schema.org/draft/2020-12/json-schema-validation.html
https://pypi.org/project/jsonschema/
https://github.com/Julian/jsonschema
https://python-jsonschema.readthedocs.io/en/stable/
https://github.com/tgeene/flask-mvc-framework/wiki/Form-Validation-Library