Python 3.7から始まり、データクラスと呼ばれるものがあります。
_from dataclasses import dataclass
@dataclass
class Foo:
x: str
_
ただし、次は失敗します。
_>>> import json
>>> foo = Foo(x="bar")
>>> json.dumps(foo)
TypeError: Object of type Foo is not JSON serializable
_
json.dumps()
でFoo
のインスタンスをjsonにエンコードするにはどうすればよいですか? objects ?
datetime
オブジェクト またはDecimalsのJSONエンコーダーにサポートを追加できるように、データクラスをシリアル化するカスタムエンコーダーサブクラスを提供することもできます。
import dataclasses, json
class EnhancedJSONEncoder(json.JSONEncoder):
def default(self, o):
if dataclasses.is_dataclass(o):
return dataclasses.asdict(o)
return super().default(o)
json.dumps(foo, cls=EnhancedJSONEncoder)
dataclasses.asdict()
関数を使用して、データクラスを辞書に変換することはできませんか?何かのようなもの:
>>> @dataclass
... class Foo:
... a: int
... b: int
...
>>> x = Foo(1,2)
>>> json.dumps(dataclasses.asdict(x))
'{"a": 1, "b": 2}'