마시멜로를 사용하여 Python에서 JSON 스키마 유효성 검사

6757 단어 marshmallowpythonjson
Marshmallow는 JSON 데이터를 직렬화, 역직렬화 및 유효성 검사할 수 있는 Python 패키지입니다.

수신 JSON 데이터 및 응답을 JSON 형식으로 처리할 때 웹 서비스에 유용합니다.

설치




python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install marshmallow




간단한 예



이 예에서는 다음 기능을 보여줍니다.
  • Schema.load()를 사용한 유효성 검사 및 역직렬화.
  • @post_load를 사용하여 입력 데이터를 전처리합니다.

  • from marshmallow import Schema, fields, validate, post_load
    
    
    class Person(Schema):
        name = fields.Str(required=True)
        gender = fields.Str(required=True, validate=validate.OneOf({"male", "female", "other"}))
        email = fields.Email(required=True)
        registration_datetime = fields.DateTime("%Y-%m-%dT%H:%M:%S%z")
    
        @post_load
        def convert_to_utc_datetime(self, data, **kwargs):
            data["registration_datetime"] = data["registration_datetime"].astimezone(datetime.timezone.utc)
            return data
    
    person_schema = Person()
    



    >>> person_data = {"name": "Tommy", "gender": "male", "email": "[email protected]", "registration_datetime": "2022-07-06T08:00:00+08:00"}
    >>> person_schema.load(person_data)
    
    {'gender': 'male',
     'name': 'Tommy',
     'registration_datetime': datetime.datetime(2022, 7, 6, 0, 0, tzinfo=datetime.timezone.utc),
     'email': '[email protected]'}
    



    >>> invalid_person_data = {"name": "Tommy", "gender": "mmale", "email": "[email protected]", "registration_datetime": "2022-07-06T08:00:00+08:00"}
    >>> person_schema.load(invalid_person_data)
    
    ValidationError: {'gender': ['Must be one of: female, other, male.']}
    

    좋은 웹페이지 즐겨찾기