クラスをJSONシリアル化可能にする方法 質問する

クラスをJSONシリアル化可能にする方法 質問する

Python クラスをシリアル化可能にするにはどうすればいいですか?

class FileItem:
    def __init__(self, fname):
        self.fname = fname

JSON へのシリアル化を試みます:

>>> import json
>>> x = FileItem('/foo/bar')
>>> json.dumps(x)
TypeError: Object of type 'FileItem' is not JSON serializable

ベストアンサー1

シンプルな機能に対するシンプルな解決策は次のとおりです。

.toJSON()方法

JSON シリアル化可能なクラスの代わりに、シリアライザー メソッドを実装します。

import json

class Object:
    def toJSON(self):
        return json.dumps(
            self,
            default=lambda o: o.__dict__, 
            sort_keys=True,
            indent=4)

したがって、シリアル化するにはこれを呼び出すだけです。

me = Object()
me.name = "Onur"
me.age = 35
me.dog = Object()
me.dog.name = "Apollo"

print(me.toJSON())

出力は次のようになります:

{
    "age": 35,
    "dog": {
        "name": "Apollo"
    },
    "name": "Onur"
}

フル機能のライブラリには、オルソン

おすすめ記事