PythonでJSONを扱う方法は?特徴や基本操作を解説

PythonでJSONを扱う方法をマスターしましょう。JSONは、WebアプリケーションやAPI連携で広く使われる軽量なデータ交換フォーマットです。Pythonの標準ライブラリjsonモジュールを使えば、JSONデータの読み書きが簡単におこなえます。
本記事では、基本的なファイル操作から、エラー処理、WEB API連携、データ分析での活用まで、実践的な例を交えて詳しく解説します。PythonとJSONを組み合わせた効率的なデータ処理の方法を学びましょう。
Contents
PythonのJSONとは?
JSON(JavaScript Object Notation)は、 データ構造をテキスト形式で表現する軽量な記法です。
WEB APIとの通信、外部とのデータ連携など、PythonでJSONを使用する場面は多いです。
JSONの特徴
JSONは人間も読み書きでき、テキストエディタで編集可能です。
多くのプログラミング言語で扱え、異なるシステム間の通信にも適しています。
JSONのオブジェクトはPythonの辞書型と似ています。
{“name”: “山田”, “age”: 30} # Pythonの辞書
上記をJSON形式で記載すると同様になります。
{“name”: “山田”, “age”: 30}
PythonでJSONを扱う方法について
JSONデータを操作するには、標準ライブラリの「json」モジュールを使います。
import json
関数dump()・dumps()でPythonオブジェクトをJSONに変換し、逆にload()・loads()でJSONをPythonオブジェクトに変換します。
詳しく見ていきましょう。
json.dump()
json.dump()は、Pythonオブジェクト(辞書やリストなど)をJSONファイルに直接書き込む関数です。
import json
# 保存したいPythonデータ
data = {
“name”: “山田太郎”,
“age”: 30,
“skills”: [“Python”, “JavaScript”, “SQL”]
}
# ファイルに書き込む
with open(“user_data.json”, “w”, encoding=“utf-8”) as f:
json.dump(data, f, ensure_ascii=False, indent=4)
# `ensure_ascii=False`を指定すると、日本語など非ASCII文字をそのまま出力します。
# `indent`パラメータを設定すると、JSONファイルが読みやすく整形されます。
大きなデータを扱う場合、dump()はメモリ効率が良く、一度にすべてのデータをメモリに読み込む必要がないためおすすめです。
json.dumps()
json.dumps()は、PythonオブジェクトをJSON形式の文字列に変換する関数です。
import json
data = { # 変換したいPythonデータ
“name”: “鈴木花子”,
“age”: 25,
“is_student”: False,
“courses”: [“数学”, “物理”]
}
# JSON文字列に変換
json_string = json.dumps(data, ensure_ascii=False)
print(json_string)
# {“name”: “鈴木花子”, “age”: 25, “is_student”: false, “courses”: [“数学”, “物理”]}
dumps()は結果を変数に保存できるため、データをさらに処理したり、他の処理と組み合わせたりする場合に便利です。
json.load()
json.load()は、JSONファイルからデータを読み込み、Pythonオブジェクトに変換する関数です。
設定ファイルの読み込みやデータのインポートによく使われます。
import json
# JSONファイルからデータを読み込む
with open(“user_data.json”, “r”, encoding=“utf-8”) as f:
loaded_data = json.load(f)
# 読み込んだデータを使う
print(f”名前: {loaded_data[‘name’]}“)
print(f”年齢: {loaded_data[‘age’]}“)
print(f”スキル: {‘, ‘.join(loaded_data[‘skills’])}“)
json.loads()
json.loads()は、JSON形式の文字列をPythonオブジェクトに変換する関数です。
WEB APIからのレスポンスやJSON形式のテキストデータを扱う際に使います。
import json
# JSON文字列
json_string = ‘{“name”: “佐々木翔”, “is_active”: true, “tags”: [“俳優”, “モデル”]}’
# JSON文字列をもとに、Pythonの辞書を作成
parsed_data = json.loads(json_string)
print(f”名前: {parsed_data[‘name’]}“)
print(f”職業: {‘, ‘.join(parsed_data[‘tags’])}“)
JSONファイルを読み書きするには
PythonでJSONファイルを扱うには、ファイル操作の基本を押さえたうえで、例外処理にも注意します。
ファイル操作の基本
Pythonでは、with文を使うとリソースの解放忘れを防止できます。
また、ファイルをopenする際は、読み込み時は‘r’モード、書き込み時は‘w’モードを指定し、 encoding=’utf-8′を明示してください。
import json
data = {“name”: “山田太郎”, “age”: 30, “skills”: [“Python”, “SQL”, “AWS”]}
# JSONファイルの書き込み例
with open(‘user_data.json’, ‘w’, encoding=‘utf-8’) as f:
json.dump(data, f, ensure_ascii=False, indent=4)
# JSONファイルの読み込み例
with open(‘user_data.json’, ‘r’, encoding=‘utf-8’) as f:
loaded_data = json.load(f)
print(loaded_data[“name”]) # 出力: 山田太郎
エラー対策
ファイルが存在しない場合や形式が不正な場合にも対応するため、例外処理を活用しましょう。
try: # UTF-8エンコーディング・読み取りモードで開く
with open(‘data.json’, ‘r’, encoding=‘utf-8’) as f:
data = json.load(f)
except FileNotFoundError:
print(“ファイルが見つかりません”)
data = {} # デフォルト値を設定
except json.JSONDecodeError:
print(“JSONの形式が不正です”)
data = {} # デフォルト値を設定
JSONの応用例
WEB APIからJSONデータを取得しファイルに保存する例を見てみましょう。
import json
import requests # HTTPリクエストを扱うrequestsモジュール
# GitHubのAPIにより指定ユーザーの情報を取得
response = requests.get(‘https://api.github.com/users/python’)
api_data = response.json()
# 取得した内容をJSONファイルに保存
with open(‘github_user.json’, ‘w’, encoding=‘utf-8’) as f:
json.dump(api_data, f, ensure_ascii=False, indent=2)
上記で作成したJSONファイルを、扱う例は以下です。
import json
import pandas as pd # データ分析や操作をおこなえるPandasモジュール
with open(‘github_user.json’, ‘r’, encoding=‘utf-8’) as f:
user_data = json.load(f)
# 必要なデータだけを抽出してDataFrameに変換
df = pd.DataFrame([{ # DataFrameは、ラベル付き2次元データを扱います。
‘name’: user_data[‘name’],
‘location’: user_data[‘location’],
‘followers’: user_data[‘followers’]
}])
# DataFrameは直接JSONファイルに保存できます。
df.to_json(‘user_stats.json’, orient=‘records’, force_ascii=False)
# 出力例:
# [{“name”:”Python”,”location”:null,”followers”:24760}]
Pythonはデータ分析ツールがそろっており、JSONを使うとWEB APIとの連携なども効率的におこなえます。
まとめ
Pythonで扱うJSONは、データ交換に最適な軽量フォーマットです。
標準ライブラリのjsonモジュールを使えば、ファイル操作やAPI連携などさまざまなケースに対応できます。本記事を参考に、ぜひ実際のプロジェクトでJSONデータを活用してみましょう。