<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 객체 직렬화
pickle을 사용한 역직렬화
결론
위 내용은 Python의 기본 인코더를 사용하여 사용자 정의 개체 JSON을 직렬화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!