カスタム Python クラスを JSON シリアル化可能にする
json.dumps() 関数を使用してカスタム Python クラスを JSON にシリアル化しようとすると、エラーが発生しますこれは、カスタムのシリアル化をネイティブにサポートしていない Python のデフォルトの動作が原因で発生する可能性があります。オブジェクト.
カスタム シリアル化メソッド: .toJSON()
この問題に対処する 1 つのアプローチは、オブジェクトを実装するクラス内にカスタム .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 Library
より包括的かつ効率的なアプローチには、次のようなサードパーティ ライブラリを使用することをお勧めします。オルジソン。 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 中国語 Web サイトの他の関連記事を参照してください。