カスタムPythonオブジェクトをJSON形式の文字列に変換する

スポンサーリンク

カスタムPythonオブジェクトをJSON形式の文字列に変換してみます。

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

■Python

Google Colaboratory(Google Colab),2023年3月18日時点ではPython 3.9.16が用いられる。

■カスタムPythonオブジェクトをJSON形式の文字列に変換する

では、早速カスタムPythonオブジェクトをJSON形式の文字列に変換するコードを書いていきます。

■コード

import json

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

person = Person("田中", 30)
json_str = json.dumps(person.__dict__,ensure_ascii=False)
print(json_str)

今回はまずimportでjsonモジュールを呼び出します。その後、Personというオブジェクトを作成するためのテンプレート(設計図)であるクラスを定義します。定義後、クラス内にdef文を用いて’__init__’と記述し、コンストラクタを使います。括弧内には、メソッドで渡される最初の引数,パラメータは、インスタンス(作成されたオブジェクト)自体でなければならないため、「self(自己)」と記述し、最初の引数として渡します。次に第2,第3の引数,パラメータとして「name, age」をそれぞれ設定します。なお、最初の「self(自己)」という引数,パラメータを介して、「name, age」という2つのクラスのインスタンス変数が初期化されます。この時にself(自己)に対してドット演算子( . )を用いてname, ageの2つを指定します。

次にpersonという変数を用意し、その中にPerson()を格納し、インスタンス化を行います。インスタンス化によりオブジェクトが作成されたことで、クラス内にアクセスできるようになりました。そこで、先ほどの2つの引数,パラメータに値を渡すために、括弧内に値をそれぞれ記述します。これで’__init__’内でself.name、self.ageに値が割り当てられます。

次にjson_strという変数を用意し、その中でjson.dumps()関数を用います。括弧内には第1の引数,パラメータとして「person.__dict__」と記述します。これはオブジェクトの属性を辞書として取得するものです。第2のの引数,パラメータとして、ensure_asciiを渡します。今回は「False」の設定し、非ASCII文字(漢字、仮名など)はそのまま出力されます。この指定がない場合は、Unicodeエスケープの形式で出力されます。これでJSON形式にエンコードされ、エンコードされたものがjson_str変数に格納されます。

格納後、print()関数を用いて、json_str変数の情報を出力します。

■実行・検証

このコード(セル)を保存し、Google Colaboratory上で、セルを実行してみます。

実行してみると、カスタムPythonオブジェクトであるPersonをJSON形式の文字列に変換し、変数された文字列をprint()関数で出力させることができました。

コメント

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