Python×JSONファイルの読込

投稿者: | 2021年6月6日

今回は構造解析モデルファイルのテキストフォーマットとして使える、JSONファイルという形式と、そのファイルをPythonで読み込む方法を紹介します。

JSONファイルとは

JSONとはJava Script Object Notationの略です。もともとJavaScript用に作られたフォーマットですが、Pythonなど他の言語でも使えます。ファイルの中身は、以下のように“key名”: “値”で一組となります。

{
    "Member": [
        {
            "Name": "SATO",
            "Age": "30",
            "Section": "Accounting"
        },
        {
            "Name": "SUZUKI",
            "Age": "20",
            "Section": "Design"
        }
    ]
}

素人の個人的な感想ですが、JSONファイルはオブジェクト指向言語との親和性が高いフォーマットだと思います。上記では、item名である“Member”クラスに”Name”と”Age”という変数があり、このクラスに”SATO”、”SUZUKI”という名前の2つのオブジェクト(インスタンス)がある、という構成です。

JSONファイルの読込プログラム

以下が、前述のJSONファイルを読み込むPythonプログラムです。

重要なのは最初にjsonライブラリをimportすること、また、with open文でJSONファイルを開いたら、json.load()関数でitem毎にファイルの中身を読み込むことが可能であることです。class宣言文のとおり、”JSONファイル文字列のitem名”[“key名”]により読込可能です。

import json

# Definition of "Member" class
class Member:
    def __init__(self, item):
        self.Name = item['Name']
        self.Age  = int(item['Age'])
        self.Section = item['Section']
    
    def get_dic_member(self):
        dic_member = {}
        dic_member[self.Name] = self
        return dic_member

# Opening JSON file
file = 'json.json'
with open(file) as f:
    df = json.load(f)

# Storing "Member" objects as dictionary type
members = {}
for item in df['Member']:
    member = Member(item)
    members.update(member.get_dic_member())

# Displaying variables of objects
print('SATO.Age = ', members['SATO'].Age)
print('SATO.Section = ', members['SATO'].Section)
print('SUZUKI.Age = ', members['SUZUKI'].Age)
print('SUZUKI.Section = ', members['SUZUKI'].Section)

名前(Name)から年齢(Age)や部署(Section)を参照できるように、後半で辞書型に置き換えていますが、ほかに上手いやり方があるかもしれません。

プログラム実行結果

実行結果は以下の通りです。”SATO”さんと”SUZUKI”さんのパラメータが正しく出力され、JSONファイルの中身がきちんと読み込まれていることが確認できました。

SATO.Age =  30
SATO.Section =  Accounting
SUZUKI.Age =  20
SUZUKI.Section =  Design
カテゴリー: Tips