【Python】JSON文字列をパースして辞書やリストに変換する方法

Web APIから取得したデータや設定ファイルなど、テキスト形式(文字列)のJSONデータをPythonプログラム内で扱えるようにするには、標準ライブラリ json モジュールの loads() 関数を使用します。

これにより、JSON形式の文字列がPythonの辞書(dict)やリスト(list)などのオブジェクトに変換され、キーやインデックスを使って自由にデータを取り出せるようになります。

目次

実装例:製品カタログデータの解析

ここでは、APIから返却されたと仮定したJSON形式の文字列(スマートフォンのカタログ情報)を解析し、特定の情報(カテゴリ、特徴、製品価格など)を抽出するコードを実装します。

ソースコード

import json

# 1. JSON形式の文字列を用意
# (通常はAPIレスポンスやファイル読み込みで取得します)
json_response = """
{
    "category": "Smartphone",
    "tags": ["5G", "OLED", "Dual Sim"],
    "products": [
        { "model": "Galaxy S25", "price": 120000, "in_stock": true },
        { "model": "Pixel 9", "price": 98000, "in_stock": false }
    ],
    "meta_info": null
}
"""

# 2. json.loads() で文字列をPythonオブジェクト(辞書)に変換
# loads = load string の略です
data = json.loads(json_response)

# 変換結果の確認
print("--- 変換後のデータ型 ---")
print(type(data))  # <class 'dict'>

print("\n--- データへのアクセス ---")
# 辞書のキーを指定してアクセス
print(f"カテゴリ : {data['category']}")

# リストのインデックスを指定してアクセス
print(f"タグ1    : {data['tags'][0]}")

# ネスト(入れ子)したデータへのアクセス
# data["products"]でリストを取得 -> [0]で最初の要素を取得 -> ["price"]で価格を取得
first_model_price = data['products'][0]['price']
print(f"製品価格 : {first_model_price}")

# JSONのnullやbooleanの変換確認
print(f"在庫状況 : {data['products'][1]['in_stock']}") # false -> False
print(f"メタ情報 : {data['meta_info']}")             # null -> None

実行結果

--- 変換後のデータ型 ---
<class 'dict'>

--- データへのアクセス ---
カテゴリ : Smartphone
タグ1    : 5G
製品価格 : 120000
在庫状況 : False
メタ情報 : None

解説

json.loads() の役割

json.loads(文字列) は、JSONフォーマットに従った文字列を受け取り、対応するPythonのデータ型に変換して返します。

JSONとPythonの型対応表

JSONのデータ型は、Pythonの以下の型に自動的にマッピングされます。

JSONPython
object ({...})dict (辞書)
array ([...])list (リスト)
stringstr
number (int/float)int または float
true / falseTrue / False
nullNone

注意点:loads と load の違い

  • json.loads(string): JSON形式の文字列を読み込む場合に使います(Load String)。
  • json.load(file): open() で開いたファイルオブジェクトから直接読み込む場合に使います。
# ファイルから読み込む場合の例
with open("data.json", "r") as f:
    data = json.load(f)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次