Pythonでdataclasses-jsonを用いてJSONシリアライズおよびデシリアライズを行う

スポンサーリンク

Pythonでdataclasses-jsonを用いてJSONシリアライズおよびデシリアライズを行ってみます。

今回はdataclasses-jsonを用います。このライブラリ・モジュールはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows11)

■dataclasses-jsonを用いてJSONシリアライズおよびデシリアライズを行う

では、早速dataclasses-jsonを用いてJSONシリアライズおよびデシリアライズを行うスクリプトを書いていきます。

■コード

import json
from dataclasses import dataclass
from dataclasses_json import dataclass_json

@dataclass_json
@dataclass
class Person:
    name: str
    age: int
    email: str

# Personオブジェクトの作成
person = Person(name='田中テスト太郎', age=25, email='xxxxx01@xxxx.xxxx')

# JSONシリアライズ
json_data = person.to_json(ensure_ascii=False)  # PersonオブジェクトをJSON形式に変換(ensure_ascii=Falseを指定)
print(json_data)  # JSONデータを表示

# JSONデシリアライズ
person_obj = Person.from_json(json_data)  # JSONデータをPersonオブジェクトに変換
print(person_obj)  # Personオブジェクトを表示

まずはjsonモジュールとdataclassesモジュール、dataclasses_jsonモジュールをインポートします。jsonモジュールはJSONデータのエンコードおよびデコードを提供するPython標準ライブラリです。 dataclassesモジュールはデータクラス(data class)を定義するための機能を提供するPython標準ライブラリです。そして今回のdataclasses_jsonモジュールです。

インポート後、Personクラスの定義します。Personクラスは、データクラス(data class)として定義されています。 dataclass_jsonデコレータが適用されており、JSONシリアライズおよびデシリアライズのサポートを追加しています。 name、age、emailの3つの属性を持ちます。

定義後、Personオブジェクトを作成します。person変数を使用して、Personクラスのインスタンスを作成します。今回は名前を「田中テスト太郎」、年齢を25、メールアドレスを「xxxxx01@xxxx.xxxx」としています。

次にJSONシリアライズを行います。to_json()メソッドを使用して、personオブジェクトをJSON形式に変換します。なお、ensure_ascii=Falseを指定しています。これにより、日本語が正しくエンコードされ、文字化けしないようになります。結果はjson_data変数に代入されます。

その後、JSONデシリアライズを行います。from_json()メソッドを使用して、json_dataをPersonオブジェクトにデシリアライズします。結果はperson_obj変数に代入されます。

最後に結果の表示します。json_dataとperson_objの内容をprint()関数を使用して出力します。

■検証・実行

今回書いたスクリプトを「d_j.py」という名前でPythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、dataclasses-jsonを用いてJSONシリアライズおよびデシリアライズを行い結果を出力させることができました。

コメント

タイトルとURLをコピーしました