Python で JSON データを操作する

JSON (JavaScript Object Notation) は、サーバーとクライアント間のデータ交換に使用される軽量データ形式です。Web アプリケーションでデータの送受信によく使用されます。Python には、JSON データの操作を容易にする json という組み込みモジュールが用意されています。この記事では、JSON オブジェクトの読み取り、書き込み、操作など、Python で JSON データを操作する基本について説明します。

JSONとは何ですか?

JSON は、人間と機械の両方にとって読み書きが簡単なテキストベースの形式です。Python 辞書に似たキーと値のペアで構成されます。一般的な JSON オブジェクトは次のようになります。

{
    "name": "Alice",
    "age": 30,
    "city": "New York",
    "is_student": false,
    "skills": ["Python", "JavaScript", "SQL"]
}

JSONモジュールのインポート

json モジュールは Python の標準ライブラリに含まれているため、何もインストールする必要はありません。スクリプトの先頭でインポートするだけです。

import json

JSONデータの読み取り

JSON データは文字列またはファイルから読み取ることができます。文字列から JSON データを解析するには json.loads() メソッドを使用し、ファイルから JSON データを読み取るには json.load() を使用します。

文字列からJSONを読み込む

文字列から JSON を読み取るには、JSON 文字列を Python 辞書に変換する json.loads() メソッドを使用します。

# Example of reading JSON from a string
json_string = '{"name": "Alice", "age": 30, "city": "New York"}'
data = json.loads(json_string)

print(data)
print(data['name'])  # Output: Alice

ファイルからJSONを読み込む

ファイルから JSON データを読み取るには、json.load() メソッドを使用します。このメソッドは、ファイルの内容を読み取り、それを Python 辞書に変換します。

# Example of reading JSON from a file
with open('data.json', 'r') as file:
    data = json.load(file)

print(data)

JSONデータの書き込み

JSON データを文字列またはファイルに書き込むことができます。 json.dumps() メソッドは Python オブジェクトを JSON 文字列に変換するのに使用され、 json.dump() は JSON データをファイルに書き込むのに使用されます。

JSON を文字列に書き込む

JSON を文字列に書き込むには、Python 辞書を JSON 文字列に変換する json.dumps() メソッドを使用します。

# Example of writing JSON to a string
data = {
    "name": "Bob",
    "age": 25,
    "city": "Los Angeles"
}

json_string = json.dumps(data)
print(json_string)

JSON をファイルに書き込む

JSON データをファイルに書き込むには、json.dump() メソッドを使用します。このメソッドは Python オブジェクトを受け取り、それを JSON 形式でファイルに書き込みます。

# Example of writing JSON to a file
data = {
    "name": "Bob",
    "age": 25,
    "city": "Los Angeles"
}

with open('output.json', 'w') as file:
    json.dump(data, file)

JSON データの整形

json.dumps() メソッドには、JSON データをフォーマットして読みやすくするためのパラメーターがいくつかあります。 indent パラメーターはインデントに使用するスペースの数を指定し、 sort_keys パラメーターは出力内のキーをソートします。

# Example of pretty-printing JSON data
data = {
    "name": "Charlie",
    "age": 35,
    "city": "Chicago"
}

json_string = json.dumps(data, indent=4, sort_keys=True)
print(json_string)

JSON と Python のデータ型の変換

Python の json モジュールは、さまざまなデータ型を処理し、JSON と Python 間で変換できます。以下はクイック リファレンスです。

  • dict (Python) から object (JSON) へ
  • list (Python) から array (JSON) へ
  • str (Python) から string (JSON)
  • intfloat (Python) から number (JSON)
  • TrueFalse (Python) から truefalse (JSON)
  • None (Python) から null (JSON) へ

JSON エラーの処理

JSON を操作しているときに、不正なフォーマットや予期しないデータが原因でエラーが発生することがあります。 json モジュールは、このような問題が発生すると、JSONDecodeError などの例外を発生させます。これらのエラーを適切に処理するには、try および except ブロックを使用します。

# Handling JSON errors
json_string = '{"name": "Alice", "age": 30, "city": "New York"'  # Missing closing brace

try:
    data = json.loads(json_string)
except json.JSONDecodeError as e:
    print(f"Error decoding JSON: {e}")

結論

JSON データの操作は、特に Web 開発やデータ サイエンスの分野では、Python 開発者にとって基本的なスキルです。json モジュールは、JSON データの読み取り、書き込み、操作に簡単に使用できるメソッドを提供します。これらのテクニックを習得することで、Python アプリケーションで JSON データを効率的に処理できます。