IT・WEB・ゲーム業界の転職に強いR-Stone

転職コラム

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

PythonでJSONを扱う方法をマスターしましょう。JSONは、WebアプリケーションやAPI連携で広く使われる軽量なデータ交換フォーマットです。Pythonの標準ライブラリjsonモジュールを使えば、JSONデータの読み書きが簡単におこなえます。

本記事では、基本的なファイル操作から、エラー処理、WEB API連携、データ分析での活用まで、実践的な例を交えて詳しく解説します。PythonとJSONを組み合わせた効率的なデータ処理の方法を学びましょう。

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データを活用してみましょう。