Pythonのjson.dump

テーマ:

Pythonのjson.dump関数は、Pythonのオブジェクト(辞書やリストなど)をJSON形式に変換し、ファイルに直接書き込むための関数です。ファイルに保存したいデータをJSON形式に変換して出力する際に使用されます。

基本構文

Python
 
json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False)
 
  • obj: 書き込むPythonオブジェクト(辞書、リスト、数値、文字列など)
  • fp: 書き込み対象のファイルオブジェクト
  • indent: インデントのスペース数(見やすく整形するため)
  • sort_keys: 辞書のキーをアルファベット順に並べる(デフォルトはFalse

例:ファイルにJSONデータを書き込む

Python

import json

data = {
    "name": "Alice",
    "age": 25,
    "city": "New York",
    "languages": ["English", "Spanish"]
}

# JSONファイルに書き込み
with open('data.json', 'w') as file:
    json.dump(data, file, indent=4)
 

このコードは、Pythonの辞書dataをJSON形式に変換し、data.jsonというファイルに書き込みます。indent=4を指定しているため、JSONデータがインデント付きで見やすく整形されて書き込まれます。

書き込まれるdata.jsonの内容

json
 
{
    "name": "Alice",
    "age": 25,
    "city": "New York",
    "languages": [
        "English",
        "Spanish"
    ]
}
 

主なオプション

  • indent: 整形されたJSONファイルを書き出すためにインデントのスペース数を指定します。インデントなしにするとコンパクトな出力になります。

  • sort_keys: Trueにすると、辞書のキーをアルファベット順に並べ替えます。デフォルトはFalseです。

  • ensure_ascii: デフォルトでTrueになっており、非ASCII文字をエスケープします。例えば、日本語などの文字をそのまま出力する場合はFalseにします。

Python
 
json.dump(data, file, ensure_ascii=False)
 

json.dumpjson.dumpsの違い

  • json.dump: PythonオブジェクトをJSON形式に変換してファイルに直接書き込みます。
  • json.dumps: PythonオブジェクトをJSON形式に変換して文字列として返します(ファイルには書き込まない)。

json.dumpsの例

Python
 
import json

data = {"name": "Alice", "age": 25}
json_string = json.dumps(data, indent=4)
print(json_string)
 

エラーハンドリング

ファイル操作やデータの形式によってエラーが発生する場合があるため、エラーハンドリングを加えるとより安全です。

 

Python

 

import json

data = {"name": "Alice", "age": 25}

try:
    with open('data.json', 'w') as file:
        json.dump(data, file, indent=4)
except IOError:
    print("ファイルの書き込みに失敗しました。")

まとめ

json.dumpはPythonのデータをJSON形式でファイルに書き込むのに便利な関数です。インデントやキーの並び順などをオプションで設定でき、データを見やすい形式で保存することができます。