はじめに
本記事では、PythonでJSONをパースする方法について解説します。JSONとは何か、基本的なパース方法、requestsモジュールを使ったパース方法、応用例、よくあるエラーとその対処法についても触れていきます。
JSONとは何か
JSONとは、JavaScript Object Notationの略称で、データの形式の一つです。構造化されたデータを扱う際によく用いられ、JavaScriptだけでなくPythonなどのプログラミング言語でも扱うことができます。JSONは、以下のような形式で表現されます。
{
"name": "tanaka",
"age": 30,
"city": "New York"
}
このように、JSONはキーと値のペアから構成され、波括弧{ }で囲まれています。キーはダブルクォーテーションで囲まれた文字列で表され、値は文字列、数値、真偽値、null、配列、またはオブジェクトのいずれかです。
PythonでのJSONのパース(parse)の基本
PythonでJSONをパースするには、jsonモジュールを使います。以下は、基本的なJSONのパース方法の例です。
import json
# JSONデータ
json_data = '{"name": "tanaka", "age": 30, "city": "New York"}'
# JSONデータをPythonオブジェクトに変換
data = json.loads(json_data)
# パースしたオブジェクトを表示
print(data)
上記のコードでは、jsonモジュールのloads関数を使ってJSONデータをPythonオブジェクトに変換し、パースしたオブジェクトを表示しています。実行結果は以下のようになります。
{'name': 'tanaka', 'age': 30, 'city': 'New York'}
また、PythonオブジェクトをJSONデータに変換する場合は、dumps関数を使います。
# Pythonオブジェクト
data = {'name': 'tanaka', 'age': 30, 'city': 'New York'}
# PythonオブジェクトをJSONデータに変換
json_data = json.dumps(data)
# 変換したJSONデータを表示
print(json_data)
上記のコードでは、PythonオブジェクトをJSONデータに変換して、変換したJSONデータを表示しています。実行結果は以下のようになります。
{"name": "tanaka", "age": 30, "city": "New York"}
Pythonでrequestsモジュールを使ったJSONパースの方法
requestsモジュールを使って、Web APIからJSONデータを取得し、パースする方法を解説します。以下は、requestsモジュールを使ってWeb APIからJSONデータを取得し、パースする方法の例です。
import requests import json # Web APIのURL url = 'スクレイピングするサイトのURL' # Web APIからJSONデータを取得 response = requests.get(url) # JSONデータをPythonオブジェクトに変換 data = json.loads(response.text) # パースしたオブジェクトを表示 print(data)
上記のコードでは、requestsモジュールを使ってWeb APIからJSONデータを取得し、jsonモジュールのloads関数を使ってJSONデータをPythonオブジェクトに変換しています。実行結果は以下のようになります。
{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
}
PythonでのJSONパースの応用例
PythonでのJSONパースの応用例として、以下のようなものがあります。
複数のJSONファイルを読み込み、結合する
以下は、複数のJSONファイルを読み込み、結合する方法の例です。
import json
# 複数のJSONファイル
json_files = [
'file1.json',
'file2.json',
'file3.json'
]
# パースした結果を格納するリスト
data_list = []
# 複数のJSONファイルを読み込み、結合
for json_file in json_files:
with open(json_file, 'r') as f:
json_data = f.read()
data = json.loads(json_data)
data_list.append(data)
# 結合したデータを表示
print(data_list)
JSONデータをCSVファイルに変換する
以下は、JSONデータをCSVファイルに変換する方法の例です。
import json
import csv
# JSONデータ
json_data = '[{"name": "tanaka", "age": 30, "city": "New York"}, {"name": "suzuki", "age": 25, "city": "Tokyo"}, {"name": "hashimoto", "age": 40, "city": "London"}]'
# JSONデータをPythonオブジェクトに変換
data = json.loads(json_data)
# CSVファイルに書き込む
with open('data.csv', 'w', newline='') as f:
writer = csv.writer(f)
# ヘッダー行を書き込む
writer.writerow(data[0].keys())
# データ行を書き込む
for d in data:
writer.writerow(d.values())
よくあるエラーとその対処法
PythonでJSONをパースする際によくあるエラーとその対処法をまとめます。
JSONDecodeError: Expecting value
JSONデータが正しくない場合、JSONDecodeError: Expecting valueが発生します。以下のようなJSONデータを読み込んだ場合に発生します。
json_data = '{name: "tanaka", age: 30, city: "New York"}'
JSONデータのキーがダブルクォーテーションで囲まれていないため、エラーが発生します。正しいJSONデータは以下のようになります。
json_data = '{"name": "tanaka", "age": 30, "city": "New York"}'
JSONDecodeError: Unterminated string starting at
JSONデータに改行コードが含まれている場合、JSONDecodeError: Unterminated string starting atが発生します。以下のようなJSONデータを読み込んだ場合に発生します。
json_data = '{"name": "tanaka",\n "age": 30,\n "city": "New York"}'
JSONデータに改行コードが含まれているため、エラーが発生します。改行コードを除去するか、JSONデータをファイルに保存して、ファイルを読み込むようにします。
まとめ
本記事では、PythonでJSONをパースする方法について解説しました。基本的なパース方法やrequestsモジュールを使ったパース方法、応用例、よくあるエラーとその対処法について触れました。JSONを扱う際には、jsonモジュールを使ってパースすることができます。また、requestsモジュールを使ってWeb APIからJSONデータを取得し、パースすることもできます。よくあるエラーについても理解し、適切に対処するようにしましょう。
![[Python]printのflushを省略しない理由と、文字と変数の表示](https://machine-learning-skill-up.com/knowledge/wp-content/uploads/2023/12/1-1343.jpg)




