Pythonでは、dataclasses
モジュールとjson
モジュールを使用して、JSONデータとデータクラスを相互に変換することができます。
DataclassからJSONへの変換
Pythonのdataclasses.asdict()
メソッドを使用して、データクラスを辞書に変換します。その後、その辞書をjson.dumps()
メソッドに渡すことで、JSON形式の文字列に変換することができます。
import dataclasses
import json
@dataclasses.dataclass
class Example:
name: str
value: int
example = Example("Test", 123)
json_str = json.dumps(dataclasses.asdict(example))
JSONからDataclassへの変換
JSONデータをデータクラスに変換するには、json.load()
メソッドのobject_hook
オプション引数を使用します。この引数には、辞書を受け取り、任意の型を返す呼び出し可能なオブジェクトを指定します。
以下に、JSONデータをHoliday
データクラスに変換する例を示します。
import json
from dataclasses import dataclass
from datetime import date
@dataclass
class Holiday:
name: str
date: date
def decode_holiday(data: dict) -> Holiday:
name = data['name']
tmp_date = datetime.datetime.strptime(data['date'], '%Y-%m-%d')
date = datetime.date(tmp_date.year, tmp_date.month, tmp_date.day)
return Holiday(name=name, date=date)
with open('holidays.json', 'r') as holidays_file:
holidays: [Holiday] = json.load(holidays_file, object_hook=decode_holiday)
このように、Pythonのdataclasses
とjson
モジュールを使用することで、データクラスとJSONデータの相互変換を行うことができます。これにより、データの構造を明確に保ちつつ、データの保存や通信などに便利なJSON形式を活用することが可能になります。.