[Python] JSONをファイルから読み込みする方法
Pythonでは、JSON形式のデータをファイルから読み込むために、標準ライブラリのjson
モジュールを使用します。
まず、ファイルを開くためにopen
関数を用いてファイルオブジェクトを取得します。
次に、json.load
関数を使用して、ファイルオブジェクトからJSONデータをPythonの辞書型に変換します。
この方法により、JSONデータを簡単に操作することが可能です。
ファイルの読み込みが完了したら、必ずclose
メソッドを呼び出してファイルを閉じることを忘れないでください。
URLからJSONを取得する基本
JSONとは何か
JSONの基本構造
JSON(JavaScript Object Notation)は、データを構造化して表現するための軽量なフォーマットです。
以下のような基本構造を持ちます。
- オブジェクト:
{ "key": "value" }
の形式で、キーと値のペアを持ちます。 - 配列:
[ "value1", "value2" ]
の形式で、複数の値を持ちます。 - 値の種類: 文字列、数値、オブジェクト、配列、true、false、null
JSONの用途と利点
JSONは、主に以下の用途と利点があります。
- データ交換: サーバーとクライアント間でデータを交換する際に使用されます。
- 可読性: 人間が読みやすい形式であるため、デバッグが容易です。
- 軽量: XMLに比べてデータ量が少なく、通信コストが低いです。
PythonでのHTTPリクエスト
HTTPリクエストの基本
HTTPリクエストは、クライアントがサーバーにデータを要求するための方法です。
主なリクエストメソッドには以下があります。
メソッド | 説明 |
---|---|
GET | データの取得を行う |
POST | データの送信を行う |
PUT | データの更新を行う |
DELETE | データの削除を行う |
PythonでのHTTPリクエストライブラリ
PythonでHTTPリクエストを行うためのライブラリには、以下のようなものがあります。
- requests: シンプルで使いやすいHTTPライブラリ
- http.client: 標準ライブラリで提供される低レベルのHTTPクライアント
- urllib: 標準ライブラリで提供されるURL操作用のモジュール
requestsライブラリの使用
requestsライブラリのインストール
requestsライブラリは、PythonでHTTPリクエストを簡単に行うためのライブラリです。
以下のコマンドでインストールできます。
pip install requests
GETリクエストの実行方法
requestsライブラリを使用して、GETリクエストを実行する方法を示します。
import requests
# URLに対してGETリクエストを送信
response = requests.get('https://api.example.com/data')
# ステータスコードを確認
print(response.status_code)
上記のコードでは、指定したURLに対してGETリクエストを送信し、レスポンスのステータスコードを出力しています。
レスポンスからJSONを取得する方法
GETリクエストのレスポンスからJSONデータを取得する方法を示します。
import requests
# URLに対してGETリクエストを送信
response = requests.get('https://api.example.com/data')
# レスポンスからJSONデータを取得
json_data = response.json()
# JSONデータを表示
print(json_data)
このコードでは、GETリクエストのレスポンスからJSONデータを取得し、表示しています。
response.json()メソッド
を使用することで、レスポンスボディをJSON形式で取得できます。
応用例
JSONデータの保存
ファイルへの書き込み方法
JSONデータをファイルに保存する方法を示します。
Pythonの標準ライブラリであるjson
モジュールを使用します。
import json
# サンプルのJSONデータ
data = {
"name": "Taro",
"age": 30,
"city": "Tokyo"
}
# JSONデータをファイルに書き込む
with open('data.json', 'w', encoding='utf-8') as file:
json.dump(data, file, ensure_ascii=False, indent=4)
このコードでは、json.dump()関数
を使用して、JSONデータをdata.json
ファイルに書き込んでいます。
ensure_ascii=False
を指定することで、日本語などの非ASCII文字をそのまま保存できます。
データベースへの保存方法
JSONデータをデータベースに保存する方法を示します。
ここでは、SQLiteを使用します。
import sqlite3
import json
# サンプルのJSONデータ
data = {
"name": "Taro",
"age": 30,
"city": "Tokyo"
}
# SQLiteデータベースに接続
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# テーブルを作成
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER,
city TEXT
)
''')
# JSONデータをデータベースに挿入
cursor.execute('''
INSERT INTO users (name, age, city) VALUES (?, ?, ?)
''', (data['name'], data['age'], data['city']))
# 変更を保存
conn.commit()
# 接続を閉じる
conn.close()
このコードでは、SQLiteデータベースに接続し、JSONデータをusers
テーブルに挿入しています。
JSONデータの加工
データのフィルタリング
JSONデータから特定の条件に合致するデータをフィルタリングする方法を示します。
# サンプルのJSONデータ
data = [
{"name": "Taro", "age": 30},
{"name": "Jiro", "age": 25},
{"name": "Saburo", "age": 35}
]
# 年齢が30以上のデータをフィルタリング
filtered_data = [person for person in data if person['age'] >= 30]
# フィルタリング結果を表示
print(filtered_data)
このコードでは、リスト内包表記を使用して、年齢が30以上のデータをフィルタリングしています。
データの変換と整形
JSONデータを別の形式に変換したり、整形する方法を示します。
# サンプルのJSONデータ
data = {
"name": "Taro",
"age": 30,
"city": "Tokyo"
}
# JSONデータを文字列に変換
json_string = json.dumps(data, indent=2)
# 整形されたJSON文字列を表示
print(json_string)
このコードでは、json.dumps()関数
を使用して、JSONデータを整形された文字列に変換しています。
非同期処理でのJSON取得
asyncioとaiohttpの基本
非同期処理を行うためのasyncio
とaiohttp
ライブラリの基本を説明します。
- asyncio: Pythonの標準ライブラリで、非同期I/Oをサポートします。
- aiohttp: 非同期HTTPクライアントライブラリで、
asyncio
と組み合わせて使用します。
非同期でのJSON取得の実装
非同期処理を使用して、URLからJSONデータを取得する方法を示します。
import aiohttp
import asyncio
async def fetch_json(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
return await response.json()
async def main():
url = 'https://api.example.com/data'
json_data = await fetch_json(url)
print(json_data)
# イベントループを実行
asyncio.run(main())
このコードでは、aiohttp
を使用して非同期でGETリクエストを送り、JSONデータを取得しています。
async
とawait
を使用することで、非同期処理を実現しています。
まとめ
この記事では、Pythonを使用してURLからJSONデータを取得する方法とその応用例について詳しく解説しました。
JSONデータの基本的な取得方法から、保存、加工、非同期処理まで幅広くカバーしました。
これを機に、実際のプロジェクトでJSONデータを活用し、効率的なデータ処理を実現してみてください。