사용자 정의 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!