Python3でclassのjson化
Scalaでcase classを多用していたので、pythonに該当機能がなかったため大変不便でした。
しかし、Python3.7から@dataclass宣言が導入され頻繁に使用しています。
classの先頭に@dataclass宣言をするだけで、Dataclassが保有する様々な機能を使用可能になります。
https://docs.python.org/3/library/dataclasses.html
from dataclasses import dataclass
@dataclass(frozen=True)
class SampleDataclass:
name: str
このdataclassをjson化できたらいいのに…ずっと思ってました。
いいものがありました。
それがdataclasses-jsonです。
https://pypi.org/project/dataclasses-json/
上記のdataclassの宣言に@dataclass_json 宣言をすることで、簡単にdatacalssからjsonのデコーダ/エンコーダを作成できます!!
from dataclasses import dataclass
from dataclasses_json import dataclass_json
@dataclass_json
@dataclass(frozen=True)
class SampleDataclass:
name: str
sd = SampleDataclass("hoge")
sd.to_json() # '{"name": "hoge"}'
SampleDataclass.from_json('{"name": "hoge"}') #SampleDataclass(name='hoge')
便利ですねー
これは普通のclass定義で使えるのかな?
=> 使えませんでした。classで使用するとTypeError(‘must be called with a dataclass type or instance’)で怒られます。
ディスカッション
コメント一覧
まだ、コメントがありません