> 백엔드 개발 > 파이썬 튜토리얼 > 사용자 정의 Python 클래스 JSON을 직렬화하려면 어떻게 해야 합니까?

사용자 정의 Python 클래스 JSON을 직렬화하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2024-12-27 00:31:10
원래의
514명이 탐색했습니다.

How Can I Make Custom Python Classes JSON Serializable?

사용자 정의 Python 클래스 JSON 직렬화 가능

json.dumps() 함수를 사용하여 사용자 정의 Python 클래스를 JSON으로 직렬화하려고 하면 오류가 발생합니다. 사용자 정의 직렬화를 기본적으로 지원하지 않는 Python의 기본 동작으로 인해 발생할 수 있습니다.

사용자 정의 직렬화 방법: .toJSON()

이 문제를 해결하는 한 가지 접근 방식은 클래스 내에 다음을 구현하는 사용자 정의 .toJSON() 메서드를 만드는 것입니다. 직렬화 논리. 이 메서드는 속성을 반복하고 JSON 문자열을 생성하여 객체를 JSON 직렬화 가능 사전으로 변환합니다. 예는 다음과 같습니다.

class FileItem:
    def __init__(self, fname):
        self.fname = fname

    def toJSON(self):
        return json.dumps({"filename": self.fname})
로그인 후 복사

.toJSON() 메서드를 호출하면 사용자 정의 개체를 JSON 문자열로 직렬화할 수 있습니다.

x = FileItem('/foo/bar')
json_string = x.toJSON()
로그인 후 복사

orjson 라이브러리

보다 포괄적이고 효율적인 접근 방식을 위해서는 orjson과 같은 타사 라이브러리를 사용하는 것이 좋습니다. Orjson은 매우 빠른 JSON 직렬화 및 역직렬화를 제공하는 Python용 C 확장입니다. orjson을 사용하면 메타클래스를 정의하여 사용자 정의 객체 직렬화를 활성화할 수 있습니다.

import orjson

class JsonSerializableMeta(type):
    def __orjson__(cls):
        return cls.__dict__

class FileItem(metaclass=JsonSerializableMeta):
    def __init__(self, fname):
        self.fname = fname
로그인 후 복사

이 메타클래스는 __orjson__ 메서드를 재정의하여 객체의 속성을 사전으로 반환하고 JSON으로 직렬화를 활성화합니다.

위 내용은 사용자 정의 Python 클래스 JSON을 직렬화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿