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にエンコードするにはどうすればいいですか?オブジェクト?
ベストアンサー1
JSONエンコーダーにサポートを追加できるのと同じようにdatetime
オブジェクトまたは Decimals の場合、データクラスをシリアル化するためのカスタム エンコーダー サブクラスを提供することもできます。
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)