
<code class="python">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))</code>
JSONEncoder.default() 메서드를 수정하는 모듈을 생성하면 모듈이 다음과 같이 모든 후속 JSON 직렬화 작업에 영향을 미칩니다. sys.modules에 캐시되어 있습니다. 다음 독립형 모듈은 이 Monkey-Patch를 구현하는 방법을 보여줍니다.
이 Monkey-패치 모듈을 활용하려면 간단히 가져오면 변경 사항이 json 모듈에 자동으로 적용됩니다.객체 직렬화를 위한 특수 메서드 추가사용자 정의 클래스의 자동 JSON 직렬화를 활성화하려면 클래스 내에 __json__이라는 특수 메서드를 정의할 수 있습니다. JSONEncoder는 이 메서드를 확인하고 직렬화를 위해 반환 값을 사용합니다. 이렇게 하면 명시적인 to_json() 메서드가 필요하지 않습니다.<code class="python">import json def _default(self, obj): return getattr(obj.__class__, "to_json", _default.default)(obj) _default.default = JSONEncoder.default JSONEncoder.default = _default</code>
Pickle을 사용하여 Python 객체 직렬화
자동 직렬화에 대한 또 다른 접근 방식은 원숭이 패치 JSONEncoder와 함께 pickle 모듈을 사용하는 것입니다. 표준 JSON 유형이 아닌 Python 객체를 피클하기 위해 default() 메서드를 재정의하면 특별한 클래스 메서드 없이도 직렬화를 달성할 수 있습니다.
pickle을 사용한 역직렬화
원래 Python을 재구성하려면 피클 기반 직렬화로 생성된 JSON 표현의 개체인 경우 역직렬화 중에 사용자 지정 object_hook 함수를 제공할 수 있습니다. 이 함수는 직렬화 중에 추가된 '_python_object' 키를 감지하고 이를 사용하여 pickle.loads()를 사용하여 원본 객체를 재구성할 수 있습니다.
결론
json 모듈은 직접 제공하지 않지만 기본 인코더를 사용하여 JSON 개체를 직렬화할 수 있게 만드는 방법은 Monkey-Patching이나 pickle 모듈을 사용하여 이를 달성하는 것이 가능합니다. 피클 접근 방식을 사용하면 대부분의 Python 객체를 자동으로 직렬화할 수 있으므로 보다 일반화된 솔루션이 됩니다.
위 내용은 Python의 기본 인코더를 사용하여 사용자 정의 개체 JSON을 직렬화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Python은 해석 된 언어이지만 편집 프로세스도 포함됩니다. 1) 파이썬 코드는 먼저 바이트 코드로 컴파일됩니다. 2) 바이트 코드는 Python Virtual Machine에 의해 해석되고 실행됩니다. 3)이 하이브리드 메커니즘은 파이썬이 유연하고 효율적이지만 완전히 편집 된 언어만큼 빠르지는 않습니다.

USEAFORLOOPHENTERATINGOVERASERASERASPECIFICNUMBEROFTIMES; USEAWHILLOOPWHENTINUTIMONDITINISMET.FORLOOPSAREIDEALFORKNOWNSEDINGENCENCENS, WHILEWHILELOOPSSUITSITUATIONS WITHERMINGEDERITERATIONS.

Pythonloopscanleadtoerrors likeinfiniteloops, modifyinglistsdizeration, off-by-by-byerrors, zero-indexingissues, andnestedloopineficiencies.toavoidthese : 1) aing'i

ForloopSareadvantageForkNowniTerations 및 Sequence, OffingSimplicityAndInamicConditionSandunkNowniTitionS 및 ControlOver Terminations를 제공합니다

Pythonusesahybridmodelofilationandlostretation : 1) ThePyThoninterPretreCeterCompileSsourcodeIntOplatform-IndependentBecode.

Pythonisbothingretedandcompiled.1) 1) it 'scompiledtobytecodeforportabilityacrossplatforms.2) thebytecodeisthentenningreted, withfordiNamictyTeNgreted, WhithItmayBowerShiledlanguges.

forloopsareusedwhendumberofitessiskNowninadvance, whilewhiloopsareusedwhentheationsdepernationsorarrays.2) whiloopsureatableforscenarioScontiLaspecOndCond


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

WebStorm Mac 버전
유용한 JavaScript 개발 도구

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.