はじめに
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つです。ぜひ、活用してみてください。

![[Python]Pandasでデータの規格化を実践する方法](https://machine-learning-skill-up.com/knowledge/wp-content/uploads/2023/10/1-437.jpg)



![[Python]Pandasの指定行を簡単に削除する方法](https://machine-learning-skill-up.com/knowledge/wp-content/uploads/2023/10/1-60.jpg)