ファイル

[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の基本

非同期処理を行うためのasyncioaiohttpライブラリの基本を説明します。

  • 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データを取得しています。

asyncawaitを使用することで、非同期処理を実現しています。

まとめ

この記事では、Pythonを使用してURLからJSONデータを取得する方法とその応用例について詳しく解説しました。

JSONデータの基本的な取得方法から、保存、加工、非同期処理まで幅広くカバーしました。

これを機に、実際のプロジェクトでJSONデータを活用し、効率的なデータ処理を実現してみてください。

関連記事

Back to top button