"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python의 기본 인코더를 사용하여 사용자 정의 객체 JSON SERIALIZABLE를 어떻게 만들려면 어떻게해야합니까?

Python의 기본 인코더를 사용하여 사용자 정의 객체 JSON SERIALIZABLE를 어떻게 만들려면 어떻게해야합니까?

2025-03-25에 게시되었습니다
검색:529

How can I make custom objects JSON serializable using the default encoder in Python?

class customEncoder (json.jsonencoder) : def default (self, obj) : Isinstance (obj, foo) : return obj.to_json () json.jsonencoder.default (self, obj)를 반환합니다. print (json.dumps (obj, cls = customencoder))

그러나 기본 인코더를 사용하여 객체를 직렬화 할 수있게하려면 어떻게해야합니까? 불행히도 JSON 모듈에서 제공하는 간단한 솔루션은 없습니다.

기본 인코딩을 위해 원숭이 패치
class CustomEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, Foo):
            return obj.to_json()

        return json.JSONEncoder.default(self, obj)

print(json.dumps(obj, cls=CustomEncoder))

JSON 가져 오기 def _default (self, obj) : let _default.default = jsonencoder.default JSONENCODER.DEFAULT = _DEFAULT

이 원숭이 패치 모듈을 사용하려면 간단히 가져 오면 간단히 가져 오면 JSON 모듈에 변경 사항을 자동으로 적용합니다. JSONENCODER는이 방법을 확인하고 직렬화에 반환 값을 사용합니다. 이것은 명백한 to_json () 메소드가 필요하지 않습니다.

Pickle

로 Python 객체를 직렬화하는 또 다른 접근법은 Pickle Module을 원숭이 패치 Jsonencoder와 함께 사용하는 것입니다. 기본 () 메소드를 표준 JSON 유형이 아닌 파이썬 객체를 피클로 재정의함으로써 특수 클래스 방법이 필요하지 않고 직렬화를 달성 할 수 있습니다. 이 함수는 직렬화 중에 추가 된 '_python_object'키를 감지하고 Pickle.loads (). 피클 접근법은 대부분의 파이썬 객체의 자동 직렬화를 허용하여보다 일반화 된 솔루션입니다. 
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3