[python] Marshmallow의 Nested 중첩 레벨 조절하기

Marshmallow은 Python에서 사용되는 직렬화 라이브러리로, 복잡한 객체와 데이터 구조를 JSON 또는 다른 형식으로 변환할 수 있습니다. Marshmallow은 Nested라는 필드를 사용하여 객체의 중첩된 구조를 처리할 수 있습니다. 이번 블로그 포스트에서는 Marshmallow의 Nested 필드를 사용하여 중첩 레벨을 조절하는 방법에 대해 알아보겠습니다.

Nested 필드

Marshmallow의 Nested 필드를 사용하면 객체의 중첩된 구조를 다룰 수 있습니다. 이 필드는 다른 Marshmallow 스키마를 사용하여 중첩된 객체를 직렬화하고 역직렬화합니다. Nested 필드의 구문은 다음과 같습니다.

from marshmallow import Schema, fields

class UserSchema(Schema):
    # 다른 스키마 사용
    profile = fields.Nested(ProfileSchema)

위의 예시에서 UserSchemaProfileSchema로 정의된 profile 필드를 갖습니다. ProfileSchema는 중첩된 객체를 다루기 위한 다른 스키마입니다.

중첩 레벨 설정

Nested 필드는 중첩된 객체의 구조를 간단하게 처리할 수 있지만, 때로는 중첩 레벨을 제한하거나 특정 레벨까지만 직렬화하고 싶을 수 있습니다. Marshmallow는 depth 매개변수를 사용하여 중첩 레벨을 제한하는 기능을 제공합니다.

from marshmallow import Schema, fields

class UserSchema(Schema):
    # 중첩 레벨 제한
    profile = fields.Nested(ProfileSchema, depth=1)

위의 예시에서 UserSchemaprofile 필드는 중첩 레벨을 1로 설정하였습니다. 이는 ProfileSchema에 정의된 필드만 직렬화하고, ProfileSchema 내부에 더 깊은 중첩이 있다면 무시하도록 합니다.

요약

이번 포스트에서는 Marshmallow의 Nested 필드를 사용하여 중첩된 객체의 구조를 처리하는 방법에 대해 알아보았습니다. Nested 필드를 사용하면 객체를 직렬화하고 역직렬화할 때 중첩된 구조를 간단하게 다룰 수 있습니다. 또한 depth 매개변수를 사용하여 중첩 레벨을 제한할 수 있어 더욱 유연하게 사용할 수 있습니다.

더 많은 Marshmallow의 기능과 사용법을 알아보고 싶다면 Marshmallow 공식 문서를 참고해주세요.