\

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のdataclassesjsonモジュールを使用することで、データクラスとJSONデータの相互変換を行うことができます。これにより、データの構造を明確に保ちつつ、データの保存や通信などに便利なJSON形式を活用することが可能になります。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です