全般

[Python] json.dumpsでJSON形式へ変換する方法(具体例あり)

今回は、Pythonのjson.dumpsでJSON形式へ変換する方法についてご紹介します。

JSON形式とは

JSON形式は、JavaScript Object Notation の略称です。

データをキーと値の組み合わせで表し、さまざまなプログラミング言語で扱いやすいテキストベースのフォーマットとなっています。

たとえば Python の辞書型と構造が似ていますが、JSON ではキーと文字列にダブルクォートが使われるのが特徴です。

json.dumpsとは

json.dumps は、Python の json モジュールが提供する関数です。

Python のオブジェクト(辞書、リスト、数値、文字列など)を JSON形式 の文字列へ変換するために使用されます。

単純なデータ型はもちろん、オプションを活用することでインデントやエンコード方式などを柔軟にコントロールできます。

json.dumpsの使い方とオプション

ここでは、基本的な使い方や代表的なオプションをいくつかご紹介します。

辞書をJSON文字列へ変換する基本例

まずは、単純に Python の辞書オブジェクトを変換する例です。

実行結果

{“name”: “太郎”, “age”: 25, “city”: “Tokyo”}

上記のように、json.dumps を呼び出すだけで、辞書が JSON 形式の文字列に変換されます。

JSON ではキーと文字列がダブルクォートで囲まれる点に注目してください。

インデントとキーのソート

indent パラメータを指定すると、整形された JSON 文字列を出力できます。

また、sort_keys を True にすると、キーをソートして出力します。

実行結果

{
“age”: 25,
“city”: “Tokyo”,
“name”: “太郎”
}

インデントによって階層が見やすくなるほか、キーがアルファベット順にソートされます。

日本語をエスケープしない設定

json.dumps はデフォルト設定では非 ASCII 文字を Unicode エスケープします。

そのため、日本語をそのまま出力したい場合は ensure_ascii=False を指定します。

実行結果

{“名前”: “太郎”, “国”: “日本”}

このように、日本語もエスケープされずに JSON 文字列として表示されます。

変換できないオブジェクトを扱う場合

標準の json.dumps は、基本的な型以外のオブジェクト(datetime, Decimal など)を扱えません。

そうした場合は default 引数を使い、変換関数を指定して対応することができます。

実行結果

{“current_time”: “2025-02-15T12:34:56.789012”}

datetime オブジェクトを ISO 8601 形式の文字列として変換し、JSON 文字列を生成しています。

よくあるエラーと対処法

Pythonのjson.dumps を使ううえで、代表的なエラーや注意点をまとめます。

  • TypeError: JSON 化できないオブジェクトを含む場合に発生します。default 引数でカスタム変換処理を設定しましょう。
  • KeyError: JSON 仕様上、辞書のキーは文字列に限定されます。数値やタプルなど文字列以外のキーはエラーになるため、skipkeys=True の利用や事前のキー変換を検討してください。
  • Unicode エスケープ: デフォルトでは日本語などの非 ASCII 文字が Unicode エスケープされます。日本語でそのまま出力したい場合は ensure_ascii=False を指定します。
  • シングルクォートでの囲み: str() など Python の文字列変換とは異なり、JSON 仕様に従ってダブルクォートが用いられます。JSON として読み込めなくなるので、独自にシングルクォートを使わないよう注意が必要です。

上記を理解しておけば、意図しないエラーを防止できます。

まとめ

Python の json.dumps は、辞書やリストなどのオブジェクトを簡単に JSON 文字列へ変換できます。

オプションを活用することで、インデントや日本語出力などを柔軟に制御できます。

変換できないオブジェクトを扱う際には、default 引数の設定がポイントです。