matobaの備忘録

和歌山と東京を往復しつつ活動するエンジニアの記録

Pythonでdataclassとjsonを相互変換する

Pythonでdataclassとjsonを相互変換したいときありませんか? 私はあります。そんな時に使えるライブラリを紹介します。

その名も dataclasses-json です。そのまま。

pypi.org

pypiになるので、pipでインストールできます。

pip install dataclasses-json

こんな感じで使えます。

>>> from dataclasses import dataclass
>>> from dataclasses_json import dataclass_json
>>>
>>> @dataclass_json
... @dataclass
... class Person:
...     name: str
...     age: int
...
>>> mtb = Person(name='matoba', age=34)
>>> mtb.to_json()
'{"name": "matoba", "age": 34}'
>>> type(mtb.to_json())
<class 'str'>
>>> mtb.to_dict()
{'name': 'matoba', 'age': 34}
>>> type(mtb.to_dict())
<class 'dict'>
>>> mtb_json = mtb.to_json()
>>> Person.from_json(mtb_json)
Person(name='matoba', age=34)