json.dumps とは?
`json.dumps` は、Pythonのデータ構造(辞書やリストなど)を **JSON形式の文字列** に変換するための関数です。例えば、APIでJSON形式のデータを返すプログラムを書くときに役立ちます。
基本的な使い方
簡単な例
以下は、Pythonの辞書をJSON文字列に変換する基本的なコード例です。
import json data = { "name": "Alice", "age": 25, "city": "Tokyo" } # PythonオブジェクトをJSON文字列に変換 json_string = json.dumps(data) print(json_string)
**出力結果:**
{"name": "Alice", "age": 25, "city": "Tokyo"}
json.dumps の便利な引数
`json.dumps` にはいくつかの便利な引数があります。それぞれの役割を解説します。
### 1. `indent` 引数
JSON文字列を見やすい形に整形するために使用します。指定した数値分、インデントが付けられます。
json_string = json.dumps(data, indent=2) print(json_string)
**出力結果:**
{ "name": "Alice", "age": 25, "city": "Tokyo" }
### 2. `ensure_ascii` 引数
デフォルトでは、非ASCII文字(例: 日本語)はエスケープされますが、この引数を `False` にすると、そのまま表示されます。
data = {"message": "こんにちは"} # ensure_ascii=False を指定 json_string = json.dumps(data, ensure_ascii=False) print(json_string)
**出力結果:**
{"message": "こんにちは"}
### 3. `separators` 引数
JSON文字列内の区切り文字をカスタマイズできます。デフォルトでは、キーと値の間に `: `、要素間に `, ` が使われます。
json_string = json.dumps(data, separators=(",", ":")) print(json_string)
**出力結果:**
{"name":"Alice","age":25,"city":"Tokyo"}
### 4. `sort_keys` 引数
辞書のキーをアルファベット順にソートして出力します。
json_string = json.dumps(data, sort_keys=True) print(json_string)
**出力結果:**
{"age": 25, "city": "Tokyo", "name": "Alice"}
実践的な使い方
よく使う引数を組み合わせて、より実用的なJSON文字列を作成しましょう。
json_string = json.dumps(data, indent=4, ensure_ascii=False) print(json_string)
**出力結果:**
{ "name": "Alice", "age": 25, "city": "Tokyo" }
## 注意点
1. **Pythonオブジェクトである必要がある**
NumPy配列や独自クラスのオブジェクトは、そのままでは `json.dumps` に渡せません。
2. **特殊なデータ型を扱う場合**
独自のオブジェクトをJSONに変換するには、`default` 引数を使ってカスタム変換ロジックを指定する必要があります。
## まとめ
`json.dumps` は、PythonでJSON形式のデータを扱う際に非常に便利な関数です。特に、`indent` や `ensure_ascii` を活用することで、読みやすくカスタマイズされたJSON文字列を簡単に作成できます。