Python クラスを JSON シリアル化可能にする
シリアル化により、オブジェクトを永続化または転送に適した形式に変換できます。 JSON でカスタム クラスをシリアル化すると、JSON でシリアル化できない性質があるため、多くの場合 TypeError が発生します。
toJSON() メソッドの実装
1 つのアプローチは、クラスの toJSON() メソッド。シリアル化を手動で処理します。これには、カスタム JSON シリアル化関数を実装し、ネストされたオブジェクトを適切に処理する必要があります。
import json class FileItem: def __init__(self, fname): self.fname = fname def toJSON(self): return json.dumps(self.__dict__) x = FileItem('/foo/bar') print(x.toJSON()) # Outputs: '{"fname": "/foo/bar"}'
orjson ライブラリの使用
包括的な解決策として、カスタム クラスを JSON にシリアル化するための効率的でカスタマイズ可能な方法を提供する orjson ライブラリの使用を検討してください。スキーマの適用や複雑なオブジェクト構造のサポートなどの高度な機能を提供します。
import orjson @orjson.dataclass class FileItem: fname: str x = FileItem('/foo/bar') json_bytes = orjson.dumps(x) # Returns a byte string print(json_bytes.decode()) # Outputs: '{"fname": "/foo/bar"}'
結論
カスタム toJSON() の使用メソッドまたは orjson ライブラリは、Python クラスを JSON にシリアル化するための便利なソリューションを提供します。どちらのアプローチでも、オブジェクトを効果的に表現し、JSON 形式で送信できることが保証されます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3