今回は、PythonでJSONデータをパース(parse)する方法についてご紹介します。
パース(parse)とは
プログラムの世界において、パースとは「解析」のことを指します。
文字列などのデータを一定のルールに基づいて読み取り、コンピュータが扱いやすい形に変換する作業です。
JSONはJavaScript Object Notationの略称で、データを軽量かつ柔軟に表現できるフォーマットとして広く使われています。
Pythonでは、標準ライブラリjsonを使うことで簡単にJSONをパースできます。
PythonでJSONをパースする基本的な手順
Pythonには標準でjsonモジュールが用意されており、以下の手順でJSONをパースできます。
- json.loads():文字列からJSONを読み込む
- json.load():ファイルからJSONを読み込む
- json.dumps():PythonオブジェクトをJSON形式の文字列へ変換する
- json.dump():PythonオブジェクトをJSONファイルへ書き出す
これらの関数を使い分けることで、JSONデータの読み込みや書き込みを効率よく行えます。
文字列からJSONをパースする
JSON形式の文字列をPythonのデータ構造に変換するにはjson.loads()を使用します。
1 2 3 4 5 6 7 8 9 10 11 |
import json # JSON形式の文字列 json_str = '{"name": "Alice", "age": 25, "city": "Tokyo"}' # 文字列からJSONをパース data = json.loads(json_str) # 結果の確認 print(data) print("Name:", data["name"]) |
{‘name’: ‘Alice’, ‘age’: 25, ‘city’: ‘Tokyo’}
Name: Alice
上記のように、JSON形式の文字列がPythonの辞書型として扱えるようになります。
ファイルからJSONをパースする
ファイルに保存されたJSONを読み込む場合は、json.load()を使用します。
1 2 3 4 5 6 7 |
import json # 'data.json'というJSONファイルを読み込む with open('data.json', 'r', encoding='utf-8') as file: data = json.load(file) print(data) |
ファイルから読み込む場合も、Pythonの辞書やリストなどの構造に自動的に変換されるため便利です。
JSONデータの書き出し
PythonオブジェクトをJSON形式に変換したり、ファイルとして保存するには、json.dumps()またはjson.dump()を利用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import json data = { "name": "Bob", "age": 30, "city": "Osaka" } # PythonオブジェクトをJSON形式の文字列に変換 json_str = json.dumps(data, ensure_ascii=False, indent=4) print(json_str) # ファイルに書き出す with open('output.json', 'w', encoding='utf-8') as file: json.dump(data, file, ensure_ascii=False, indent=4) |
{
“name”: “Bob”,
“age”: 30,
“city”: “Osaka”
}
ensure_ascii=Falseは日本語などのマルチバイト文字をそのまま出力するためのオプションです。
indent=4で見やすく整形されたJSONを生成できます。
よくあるエラーと対策
JSONのパース時には、データが不正な形式であるなどの原因でエラーが発生する場合があります。
特に外部から取得したJSONは、想定外の形式になっている可能性があるため、エラー処理を行うことが重要です。
1 2 3 4 5 6 7 8 9 10 |
import json json_str = '{"name": "Charlie", "age": "not_a_number"}' # 数値が文字列の例 try: data = json.loads(json_str) except json.JSONDecodeError as e: print("JSONのパースに失敗しました:", e) else: print(data) |
このように、try-exceptブロックでエラーを捕捉すると、予期せぬクラッシュを回避できます。
また、JSONがサポートしていない型(datetimeなど)を変換する場合には別途カスタマイズが必要です。
まとめ
Pythonの標準ライブラリjsonを使うと、文字列やファイルから簡単にJSONデータをパースできます。
また、PythonオブジェクトをJSON形式に変換し、ファイルへ書き出す方法も覚えておくと便利です。
実際に運用する際はエラーハンドリングや文字エンコーディングなどの注意点も考慮すると、より堅牢な実装が可能です。