ray88’s diary

お仕事で困ったとき用の自分用の覚書

Python json.dumps(辞書やリスト等データ構造をJSON形式の文字列に変換)

ChatGPT 目次 - ray88’s diary

json.dumps とは?
`json.dumps` は、Pythonのデータ構造(辞書やリストなど)を **JSON形式の文字列** に変換するための関数です。例えば、APIJSON形式のデータを返すプログラムを書くときに役立ちます。

基本的な使い方

簡単な例

以下は、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` は、PythonJSON形式のデータを扱う際に非常に便利な関数です。特に、`indent` や `ensure_ascii` を活用することで、読みやすくカスタマイズされたJSON文字列を簡単に作成できます。