Python|JSON形式のファイル・文字列の読み込み書き込み

1. はじめに

Pythonでデータを扱う際、JSON形式のファイル・文字列の読み込み書き込みは非常に重要なスキルです。JSON(JavaScript Object Notation)は軽量なデータフォーマットで、Web APIの通信や設定ファイルなどで広く使われています。

本記事では、Pythonの標準ライブラリ json モジュールを使って、JSON形式のファイルや文字列を読み書きする方法について、基礎から実践的な応用まで丁寧に解説します。初心者の方でも理解しやすいよう、具体的なコード例と実行結果を掲載しています。

 

2. PythonでJSONを扱う基本

2-1. JSONとは?

JSONは、キーと値のペアで構成されるデータ構造で、Pythonの辞書(dict)やリスト(list)に非常に似ています。例えば以下のような形式です。

{
  "name": "Taro",
  "age": 25,
  "skills": ["Python", "JavaScript"]
}

2-2. jsonモジュールの基本関数

Pythonでは標準ライブラリのjsonモジュールを使って、JSON形式のデータを簡単に扱うことができます。代表的な関数は以下の通りです。

  • json.load():ファイルからJSONを読み込む
  • json.dump():ファイルにJSONを書き込む
  • json.loads():文字列からJSONを読み込む
  • json.dumps():Pythonオブジェクトを文字列に変換する

2-3. JSON文字列を読み込む(loads)

import json

# JSON文字列
json_str = '{"name": "Taro", "age": 25}'

# Pythonの辞書に変換
data = json.loads(json_str)
print(data)

実行結果:

{'name': 'Taro', 'age': 25}

2-4. PythonオブジェクトをJSON文字列に変換(dumps)

# 辞書オブジェクト
data = {"name": "Taro", "age": 25}

# JSON文字列に変換
json_str = json.dumps(data, indent=2)
print(json_str)

実行結果:

{
  "name": "Taro",
  "age": 25
}

 

3. よくある使い方・応用例

3-1. JSONファイルを読み込む(load)

ファイルから直接JSONデータを読み込む例です。

import json

# sample.jsonファイルから読み込む
with open('sample.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

print(data)

実行結果:

{'name': 'Taro', 'age': 25}

3-2. JSONファイルに書き込む(dump)

data = {"name": "Hanako", "age": 30}

# sample_out.jsonに保存
with open('sample_out.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, indent=2, ensure_ascii=False)

ensure_ascii=False を指定することで、日本語も文字化けせずに保存できます。

3-3. APIレスポンスの加工や保存

外部APIから受け取ったJSONをPythonで加工し、ファイルに保存する例です。

import json
import requests

response = requests.get('https://jsonplaceholder.typicode.com/users')
users = response.json()

# ユーザー名だけ抽出
usernames = [user["username"] for user in users]

# JSONファイルに保存
with open('usernames.json', 'w', encoding='utf-8') as f:
    json.dump(usernames, f, indent=2)

実行結果:

[
  "Bret",
  "Antonette",
  "Samantha",
  ...
]

 

4. 注意点・エラー対策

4-1. JSONDecodeErrorが出る場合

JSONデータの形式が不正な場合、json.loads()json.load()JSONDecodeErrorが発生します。よくある原因は以下の通りです。

  • シングルクォート(')を使っている
  • 末尾のカンマ
  • 全体が文字列で囲まれていない

エラー時には try-except で囲むのが安全です。

import json

invalid_json = "{'name': 'Taro'}"  # シングルクォートはNG

try:
    data = json.loads(invalid_json)
except json.JSONDecodeError as e:
    print("エラー:", e)

4-2. ファイルの文字化け

日本語を含むJSONファイルを扱うときは、エンコーディングに注意が必要です。読み書き時はencoding='utf-8'を必ず指定しましょう。

 

5. まとめ

今回は、PythonでJSON形式のファイル・文字列の読み込み書き込みを行う方法について解説しました。ポイントを振り返りましょう。

  • json.loads()json.dumps() は文字列の変換
  • json.load()json.dump() はファイル操作に使用
  • 日本語対応には ensure_ascii=False を活用
  • JSON形式の正しさを意識し、エラー対策も行う

実務では、設定ファイルの管理、API連携、ログ出力など、多くの場面でJSONが使われます。初心者のうちからしっかりと使い方を身につけておきましょう。

学習のコツ:実際に小さなJSONファイルを自分で作って、読み書きのコードを手を動かして試すことで、理解が深まります!

タイトルとURLをコピーしました