Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでJSONのエントリをループ処理する方法をわかりやすく解説

Pythonには標準ライブラリとしてjsonモジュールが用意されており、これを使えばJSONファイルを簡単に解析できます。jsonモジュールはJSONデータを読み込んで辞書(dict)に変換するため、その後は通常の辞書と同じようにキーや値へアクセスできます。

サンプルとなるJSONデータ

たとえば、以下のような内容のJSONファイルがあるとします。

{
    "id": "file",
    "value": "File",
    "popup": {
        "menuitem": [
            {"value": "New", "onclick": "CreateNewDoc()"},
            {"value": "Open", "onclick": "OpenDoc()"},
            {"value": "Close", "onclick": "CloseDoc()"}
        ]
    }
}

JSONを読み込んでループ処理する例

このファイルをPythonプログラムに読み込み、各キーと値をループで取り出すには、次のように記述します。

import json

f = open('data.json')
data = json.load(f)
f.close()

# 読み込んだdataは通常の辞書として扱える
for (k, v) in data.items():
    print("Key: " + k)
    print("Value: " + str(v))

with文を使ったより安全な書き方

ファイルの閉じ忘れを防ぐために、with文を使うのがおすすめです。

import json

with open('data.json', encoding='utf-8') as f:
    data = json.load(f)

for k, v in data.items():
    print(f"Key: {k}")
    print(f"Value: {v}")

実行結果

上記のコードを実行すると、以下のような出力が得られます。

Key: id
Value: file
Key: value
Value: File
Key: popup
Value: {'menuitem': [{'value': 'New', 'onclick': 'CreateNewDoc()'}, {'value': 'Open', 'onclick': 'OpenDoc()'}, {'value': 'Close', 'onclick': 'CloseDoc()'}]}

ネストした構造の扱い方のポイント

上の出力からもわかるように、値がさらに辞書やリストになっている場合(この例のpopupなど)、str()で文字列化すると全体がそのまま表示されます。入れ子になった要素を個別に処理したい場合は、型を確認しながら再帰的にループするか、必要なキーを直接指定してアクセスします。

# 例:menuitemの中身を個別に表示する
for item in data["popup"]["menuitem"]:
    print(item["value"], item["onclick"])

このように、json.load()で読み込んだデータは普通の辞書・リストとして操作できるため、Pythonの標準的なイテレーション手法をそのまま活用できます。

  1. Pythonのcv2(OpenCV)で画像を表示する方法をわかりやすく解説

    PythonのOpenCV(cv2)を使えば、数行のコードで画像ファイルを読み込み、画面に表示することができます。ここでは、画像を読み込んで表示するための基本的な手順と、各関数の役割について解説します。 画像を表示するための基本手順 cv2で画像を読み込み・表示するには、主に以下のステップを実行します。 cv2.imread():ファイルから画像を読み込みます。 cv2.imshow():指定した名前のウィンドウに画像を表示します。 cv2.waitKey():キーが押されるまでプログラムを待機させます。 cv2.destroyAllWindows():開いているすべてのHighGUIウィン

  2. PythonのMatplotlibでヒストグラムを作成する方法をわかりやすく解説

    Matplotlibは、データ可視化のために広く使われている人気のPythonライブラリです。データの可視化は非常に重要なステップです。数値を一つずつ確認したり複雑な計算を行ったりしなくても、データ全体の傾向や特徴を直感的に把握できるようになるからです。また、定量的な洞察を効果的に伝える手段としても優れています。MatplotlibとはMatplotlibは、データをもとに2次元のプロット(グラフ)を作成するためのライブラリです。オブジェクト指向のAPIを備えており、作成したグラフをPythonアプリケーションに組み込むことも簡単に行えます。IPythonシェル、Jupyter Noteboo