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"
}
フル機能のライブラリには、オルソン。