Pythonを学ぶ上で、データのやり取りや保存方法の基本としてJSON形式を理解することは重要です。
この記事では、Python標準モジュールのjson
を取り上げ、その基本と実用例を解説します。
JSONとは?
JSON(JavaScript Object Notation)は、データを簡潔かつ人間が読める形式で表現する軽量なデータフォーマットです。
JSONは、もともとJavaScriptで利用されていましたが、現在ではプログラミング言語を問わず、広く使われています。
特に、APIを介したデータ交換や設定ファイル、データの保存形式として重要な役割を果たしています。
具体的には、次のような特徴があります: - テキスト形式で軽量。 - 構造化されたデータ(リストや辞書のようなもの)を表現可能。 - 人間にも読みやすく、機械が解析しやすい。
JSONの構造と形式
JSONは、次のような基本構造を持ちます:
オブジェクト(Object)
{ }
で囲まれたキーと値のペアの集合。- キーは文字列、値は文字列・数値・オブジェクトなど。
{ "name": "Alice", "age": 25, "isStudent": false }
配列(Array)
[ ]
で囲まれた値のリスト。- 値は文字列・数値・オブジェクトなどを含められる。
{ "colors": ["red", "green", "blue"] }
JSONで使えるデータ型
- 文字列:
"hello"
- 数値:
42
,3.14
- 真偽値:
true
,false
- null:
null
- オブジェクト:
{...}
- 配列:
[...]
JSONが使われる場面
コンピュータ内部では、Pythonのリスト、辞書、数値などのデータ構造を使い、高速に処理を行うことができます。 これらは文字列ではありませんので、コンピュータ外部にそのまま持ち出せません。 そこで、それらを文字列に変換して、サーバと通信したり、ディスプレイに表示したりします。 この文字列変換には、いくつかの方法が考えられますが、最も簡単なのがJSONです。
JSONは多くの場面で使われています。その例として以下が挙げられます:
Web APIとのデータ交換
クライアントとサーバー間のデータ送受信に使用されます。例えば、天気予報APIや為替レートAPIは、データをJSON形式で提供します。設定ファイル
アプリケーションの設定情報を保存する形式として利用されます。例えば、VSCodeの設定ファイル(settings.json
)はJSON形式です。データの永続化
小規模なデータベース代わりに、JSON形式でデータを保存することもあります。
PythonでJSONを扱う:json
モジュール
Pythonの標準モジュールであるjson
を使うと、JSONデータをPythonのデータ型(辞書やリストなど)と相互に変換したり、JSONファイルを操作できます。
json
モジュールの主な機能
jsonは単純な言い方をすれば、オブジェクトと配列からなるテキストです。 それは、自然にPythonの辞書とリストに対応させることができます。 その他の要素も次の表のように対応させることができます。
JSONの型 | Pythonの型 |
---|---|
オブジェクト | 辞書 (dict ) |
配列 | リスト (list ) |
文字列 (string ) |
文字列 (str ) |
数値 (number ) |
整数 (int ) または浮動小数点数 (float ) |
真偽値 (true/false ) |
True / False |
null |
None |
この表に従って次のような双方向の変換がjsonモジュールではサポートされています。
JSONファイルの読み書き
JSONモジュールでよく使うメソッド
1. json.dumps(obj, **kwargs)
例:
import json data = {"name": "Alice", "age": 25} s = json.dumps(data) print(s) # {"name": "Alice", "age": 25}
主な引数:
indent
: インデントを指定し、読みやすく整形。sort_keys
: キーをアルファベット順にソート。
整形した出力:
s = json.dumps(data, indent=4, sort_keys=True) print(s)
次のように整形されて表示されます。
{ "age": 25, "name": "Alice" }
2. json.loads(s)
例:
s = '{"name": "Alice", "age": 25}' data = json.loads(s) print(data["name"]) # Alice
3. json.dump(obj, fp, **kwargs)
PythonオブジェクトをJSON形式でファイルに保存します。
例:
data = {"name": "Alice", "age": 25} with open('data.json', 'w') as f: json.dump(data, f, indent=4)
4. json.load(fp)
JSON形式のファイルをPythonのデータ型に変換して読み込みます。
例:
with open('data.json', 'r') as f: data = json.load(f) print(data)
実用例:JSON形式の設定ファイルを読み書きする
Pythonプログラムで設定を管理する際、JSON形式のファイルを利用すると便利です。
サンプル設定ファイル(config.json
)
{ "theme": "dark", "fontSize": 14, "autoSave": true }
設定を読み込むプログラム
import json # 設定ファイルを読み込む with open('config.json', 'r') as f: config = json.load(f) # 設定を表示 print(f"テーマ: {config['theme']}") print(f"フォントサイズ: {config['fontSize']}") print(f"自動保存: {'有効' if config['autoSave'] else '無効'}")
設定を変更して保存するプログラム
# 設定を変更 config['theme'] = 'light' # 設定ファイルを更新 with open('config.json', 'w') as f: json.dump(config, f, indent=4)