【Python】JSON文字列をクラスにデシリアライズする方法

この記事では、PythonでJSON文字列とクラスの相互変換を行う方法について解説します。

JSON文字列をPythonの辞書に変換する方法や、Pythonの辞書をクラスに変換する方法、さらにはクラスのインスタンスをJSON文字列にシリアライズする方法などを学ぶことができます。

また、JSON文字列をクラスにデシリアライズする際の注意点も紹介します。

これにより、データの保存や通信などの用途でJSONとクラスを活用することができます。

目次から探す

JSON文字列をPythonの辞書に変換する方法

JSON(JavaScript Object Notation)は、データを表現するための軽量なフォーマットです。

Pythonでは、JSON文字列をPythonの辞書に変換することができます。

これには、jsonモジュールを使用します。

import json

# JSON文字列
json_str = '{"name": "John", "age": 30, "city": "Tokyo"}'

# JSON文字列をPythonの辞書に変換
data = json.loads(json_str)

print(data)  # {'name': 'John', 'age': 30, 'city': 'Tokyo'}

json.loads()関数を使用して、JSON文字列をPythonの辞書に変換します。

変換されたデータは、辞書として扱うことができます。

Pythonの辞書をクラスに変換する方法

Pythonの辞書をクラスに変換するには、namedtupledataclassなどのデータ構造を使用することができます。

以下は、namedtupleを使用した例です。

from collections import namedtuple

# Pythonの辞書
data = {"name": "John", "age": 30, "city": "Tokyo"}

# namedtupleを定義
Person = namedtuple("Person", data.keys())

# 辞書をクラスに変換
person = Person(**data)

print(person.name)  # John
print(person.age)  # 30
print(person.city)  # Tokyo

namedtupleを使用すると、辞書のキーを属性として持つクラスを定義することができます。

**dataを使用して、辞書の値をクラスの属性に渡します。

クラスのインスタンスをJSON文字列にシリアライズする方法

クラスのインスタンスをJSON文字列にシリアライズするには、jsonモジュールのdumps()関数を使用します。

import json

# クラスの定義
class Person:
    def __init__(self, name, age, city):
        self.name = name
        self.age = age
        self.city = city

# クラスのインスタンスを作成
person = Person("John", 30, "Tokyo")

# クラスのインスタンスをJSON文字列にシリアライズ
json_str = json.dumps(person.__dict__)

print(json_str)  # '{"name": "John", "age": 30, "city": "Tokyo"}'

json.dumps()関数を使用して、クラスのインスタンスをJSON文字列にシリアライズします。

person.__dict__を使用して、クラスの属性を辞書として取得します。

JSON文字列をクラスにデシリアライズする方法

JSON文字列をクラスにデシリアライズするには、先ほどの方法と逆の手順を踏みます。

具体的には、JSON文字列をPythonの辞書に変換し、その辞書を使用してクラスのインスタンスを作成します。

import json

# JSON文字列
json_str = '{"name": "John", "age": 30, "city": "Tokyo"}'

# JSON文字列をPythonの辞書に変換
data = json.loads(json_str)

# クラスの定義
class Person:
    def __init__(self, name, age, city):
        self.name = name
        self.age = age
        self.city = city

# 辞書を使用してクラスのインスタンスを作成
person = Person(**data)

print(person.name)  # John
print(person.age)  # 30
print(person.city)  # Tokyo

まず、JSON文字列をPythonの辞書に変換します。

その後、辞書を使用してクラスのインスタンスを作成します。

JSON文字列をクラスにデシリアライズする際の注意点

JSON文字列をクラスにデシリアライズする際には、以下の点に注意する必要があります。

  • JSON文字列のキーとクラスの属性名が一致している必要があります。
  • クラスの属性には、適切なデータ型が設定されている必要があります。
  • クラスの定義が必要です。

これらの注意点に気を付けることで、正しくJSON文字列をクラスにデシリアライズすることができます。

目次から探す