はじめに
Pythonのjsonモジュールには、JSON形式のデータをPythonのデータ型に変換するjson.loads()
と、Pythonのデータ型をJSON形式に変換するjson.dumps()
があります。この記事では、json.dumps()
の使い方について詳しく解説します。
json.dumpsの基本的な使い方
json.dumps()
は、Pythonのデータ型をJSON形式に変換します。たとえば、次のようなリストをJSON形式に変換することができます。
import json my_list = [1, 2, 3, "four", "五"] json_str = json.dumps(my_list) print(json_str)
上記のプログラムを実行すると、次のように出力されます。
[1, 2, 3, "four", "\u4e94"]
ここで、\u4e94
は、日本語の「五」をUnicodeエスケープしたものです。
json.dumpsでのindentの利用方法
json.dumps()
には、indent
引数を指定することで、JSON形式のデータを整形することができます。
import json my_dict = {"name": "Alice", "age": 25, "hobbies": ["reading", "cooking", "traveling"]} json_str = json.dumps(my_dict, indent=4) print(json_str)
上記のプログラムを実行すると、次のように出力されます。
{ "name": "Alice", "age": 25, "hobbies": [ "reading", "cooking", "traveling" ] }
ここで、indent=4
により、インデントの幅が4に設定されています。
json.dumpsでのutf-8エンコーディングの設定方法
json.dumps()
は、デフォルトでUTF-8エンコーディングを使用してJSON形式の文字列を生成します。しかし、必要に応じて、ensure_ascii=False
を指定することで、UTF-8エンコーディング以外のエンコーディングを使用することもできます。
import json my_dict = {"name": "アリス", "age": 25, "hobbies": ["読書", "料理", "旅行"]} json_str = json.dumps(my_dict, ensure_ascii=False) print(json_str)
上記のプログラムを実行すると、次のように出力されます。
{"name": "アリス", "age": 25, "hobbies": ["読書", "料理", "旅行"]}
ここで、ensure_ascii=False
により、UTF-8エンコーディング以外のエンコーディングを使用しています。
json.dumpsでの特殊文字のエスケープ処理方法
json.dumps()
では、デフォルトで特殊文字をエスケープします。たとえば、次のような文字列をJSON形式に変換する場合、\n
が\\n
にエスケープされます。
import json my_str = "Hello\nWorld" json_str = json.dumps(my_str) print(json_str)
上記のプログラムを実行すると、次のように出力されます。
"Hello\\nWorld"
しかし、必要に応じて、json.dumps()
にensure_ascii=False
を指定することで、特殊文字をエスケープしないようにすることもできます。
import json my_str = "Hello\nWorld" json_str = json.dumps(my_str, ensure_ascii=False) print(json_str)
上記のプログラムを実行すると、次のように出力されます。
"Hello\nWorld"
Pythonのjson.dumpsによるデータ整形の実践例
次のようなJSON形式のデータがあったとします。
{ "name": "Alice", "age": 25, "hobbies": [ "reading", "cooking", "traveling" ], "address": { "zip_code": "123-4567", "prefecture": "Tokyo", "city": "Chiyoda-ku", "town": "Kudanminami" } }
このデータをPythonのデータ型に変換し、整形するには、次のようなプログラムを書くことができます。
import json json_str = ''' { "name": "Alice", "age": 25, "hobbies": [ "reading", "cooking", "traveling" ], "address": { "zip_code": "123-4567", "prefecture": "Tokyo", "city": "Chiyoda-ku", "town": "Kudanminami" } } ''' data = json.loads(json_str) print("名前:", data["name"]) print("年齢:", data["age"]) print("趣味:") for hobby in data["hobbies"]: print(" -", hobby) print("住所:") print(" 郵便番号:", data["address"]["zip_code"]) print(" 都道府県:", data["address"]["prefecture"]) print(" 市区町村:", data["address"]["city"]) print(" 町名:", data["address"]["town"]) json_str = json.dumps(data, ensure_ascii=False, indent=4) print(json_str)
上記のプログラムを実行すると、次のように出力されます。
名前: Alice 年齢: 25 趣味: - reading - cooking - traveling 住所: 郵便番号: 123-4567 都道府県: Tokyo 市区町村: Chiyoda-ku 町名: Kudanminami { "name": "Alice", "age": 25, "hobbies": [ "reading", "cooking", "traveling" ], "address": { "zip_code": "123-4567", "prefecture": "Tokyo", "city": "Chiyoda-ku", "town": "Kudanminami" } }
ここで、json.loads()
により、JSON形式のデータをPythonのデータ型に変換し、json.dumps()
により、Pythonのデータ型をJSON形式に変換しています。
json.dumpsを使ったプログラミングのヒント
json.dumps()
は、JSON形式のデータを生成するための強力なツールです。たとえば、Web APIを開発する際に、JSON形式のレスポンスを生成するために使用することができます。
また、json.dumps()
は、Pythonのデータ型をJSON形式に変換するためのツールでもあります。たとえば、Pythonでデータを操作した結果をJSON形式に変換し、外部に公開することができます。
まとめ
json.dumps()
は、Pythonのデータ型をJSON形式に変換するためのツールです。indent
引数を指定することで、JSON形式のデータを整形することができます。また、ensure_ascii=False
を指定することで、UTF-8エンコーディング以外のエンコーディングを使用することもできます。さらに、特殊文字をエスケープしないようにすることもできます。
Pythonのjsonモジュールは、JSON形式のデータを扱うための重要なツールの1つです。ぜひ、活用してみてください。