カスタム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()関数で出力させることができました。
コメント