記事内にはプロモーションが含まれています

【Python】dict(辞書)をJSONに変換・保存する方法まとめ!dumpsとdumpの違いも解説

【Python】dict(辞書)をJSONに変換・保存する方法まとめ!dumpsとdumpの違いも解説 Python

PythonでWeb APIを叩いたり、設定ファイルを扱ったりする際、辞書型(dict)のデータをJSON形式に変換する処理は避けて通れません。

dict をJSON文字列にしたい」
「JSONファイルとして保存したい」
「日本語が \uXXXX みたいに文字化けするのを直したい」

こうした要望は、Pythonの標準ライブラリである json モジュールを使えば簡単に解決できます。

しかし、json.dumpsjson.dump の違いや、オプションの使い分けで迷うことも少なくありません。

この記事では、Pythonの辞書(dict)をJSONに変換する基本的な方法から、ファイルへの書き出し、インデントによる整形、そして日本語を正しく出力するためのテクニックまで、サンプルコード付きで徹底解説します。

【本記事の信頼性】
プロフィール
執筆者:マヒロ
  • 執筆者は元エンジニア
  • SES⇒大手の社内SE⇒独立
  • 現在はプログラミングスクールを運営
  • モットーは「利他の精神」
💻 本記事の検証環境(2026年2月確認)
  • OS:Windows 11 / macOS Sequoia
  • IDE:Visual Studio / VS Code / IntelliJ IDEA
  • その他:Chrome DevTools / 各言語最新安定版

※本メディアでは、上記環境にてコードの動作と情報の正確性を検証済みです。

dict(辞書)をJSON文字列に変換する json.dumps

まずは、Pythonの辞書オブジェクトを「JSON形式の文字列(str)」に変換する基本操作です。

これには json.dumps 関数を使用します。
APIのリクエストボディを作成したり、ログに出力したりする場合によく使われます。

基本的な変換方法

import json

# 変換したい辞書データ
user_data = {
    "id": 101,
    "name": "Alice",
    "is_active": True,
    "scores": [80, 90, 95]
}

# 辞書をJSON文字列に変換
json_str = json.dumps(user_data)

print(f"型: {type(json_str)}")
print(json_str)

実行結果

型: <class 'str'>
{"id": 101, "name": "Alice", "is_active": true, "scores": [80, 90, 95]}

json.dumps(user_data) を実行することで、Pythonの辞書型がJSON形式の文字列に変換されました。

注目すべきは、Pythonでは True(先頭大文字)だったものが、JSONでは true(小文字)に変換されている点です。

json モジュールは、Pythonの型とJSONの型を自動的にマッピングしてくれます。

日本語が文字化けする場合の対処法(ensure_ascii)

デフォルトの設定では、日本語などの非ASCII文字は \uXXXX のようなユニコードエスケープシーケンスに変換されてしまいます。

日本語をそのまま出力したい場合は、ensure_ascii=False オプションを指定します。

import json

data = {"message": "こんにちは"}

# デフォルト(文字化けのように見える)
print(json.dumps(data))

# ensure_ascii=False を指定(日本語のまま出力)
print(json.dumps(data, ensure_ascii=False))

実行結果

{"message": "\u3053\u3093\u306b\u3061\u306f"}
{"message": "こんにちは"}

json.dumps はデフォルトで ensure_ascii=True になっており、すべての文字をASCII文字で表現しようとします。

これを False にすることで、UTF-8などの文字がそのまま出力され、人間にとって読みやすいJSONになります。

JSONを見やすく整形する(インデント)

APIのレスポンスなど、複雑なJSONデータは1行で出力されると非常に読みづらいです。

indent オプションを指定することで、きれいな形式(Pretty Print)で出力できます。

indentオプションの使い方

import json

data = {
    "users": [
        {"id": 1, "name": "Tanaka"},
        {"id": 2, "name": "Suzuki"}
    ],
    "count": 2
}

# インデントを4スペースに設定
formatted_json = json.dumps(data, indent=4, ensure_ascii=False)

print(formatted_json)

実行結果

{
    "users": [
        {
            "id": 1,
            "name": "Tanaka"
        },
        {
            "id": 2,
            "name": "Suzuki"
        }
    ],
    "count": 2
}

indent=4 を指定すると、階層ごとにスペース4つ分のインデントが挿入され、改行も自動で行われます。

デバッグ時や、設定ファイルとして保存する場合には必須のテクニックです。
一般的には 2 または 4 が使われます。

dict(辞書)をJSONファイルとして保存する json.dump

文字列として取得するのではなく、直接ファイル(.json)に書き出したい場合は、json.dump 関数を使います。

dumps(sがついている=string)との違いに注意しましょう。

ファイルへの書き出し手順

import json

data = {
    "app_name": "My App",
    "version": 1.0,
    "settings": {"theme": "dark", "notifications": True}
}

# ファイルを書き込みモードで開く
# encoding='utf-8' を指定するのがベストプラクティス
with open("config.json", "w", encoding="utf-8") as f:
    json.dump(data, f, indent=2, ensure_ascii=False)

print("config.json に保存しました。")

実行結果

(カレントディレクトリに config.json が作成されます)

コードの解説

  1. open() 関数でファイルを書き込みモード("w")で開きます。この際、文字コード utf-8 を明示しておくと、Windows環境などでの文字化けトラブルを防げます。
  2. json.dump(データ, ファイルオブジェクト) の順に引数を渡します。
  3. ここでも indentensure_ascii オプションは同様に使用可能です。

逆変換:JSONからdictへの変換(loads / load)

参考までに、JSONをPythonの辞書に戻す方法も確認しておきましょう。

文字列から戻すなら json.loads、ファイルから読み込むなら json.load です。

import json

# JSON文字列
json_text = '{"id": 1, "name": "Python"}'

# 辞書に変換
data_dict = json.loads(json_text)

print(data_dict["name"]) # Python

ソート機能:キーの順序を揃える

Python 3.7以降、辞書の順序は保存されますが、JSONとして出力する際にキーをアルファベット順にソートしたい場合は sort_keys=True を使います。

import json

data = {"c": 3, "a": 1, "b": 2}

# キーでソートして出力
print(json.dumps(data, sort_keys=True))

実行結果

{"a": 1, "b": 2, "c": 3}

データの比較を行いたい場合や、Gitでの差分を見やすくしたい場合に有効です。

Pythonのスキルを活かして年収を上げる方法

以上、PythonでdictをJSONに変換・保存する方法について解説してきました。

なお、Pythonのスキルがある場合には、「転職して年収をアップさせる」「副業で稼ぐ」といった方法を検討するのがおすすめです。

Pythonエンジニアの需要は非常に高いため、転職によって数十万円の年収アップはザラで、100万円以上年収が上がることも珍しくありません。

なお、転職によって年収を上げたい場合は、エンジニア専門の転職エージェントサービスを利用するのが最適です。
今すぐ転職する気がなくとも、とりあえず転職エージェントに無料登録しておくだけで、スカウトが届いたり、思わぬ好待遇の求人情報が送られてきたりするというメリットがあります。
併せて、副業案件を獲得できるエージェントにも登録しておくと、空いている時間を活かして稼げるようなPythonの案件を探しやすくなります。

転職エージェントも副業エージェントも、登録・利用は完全無料なので、どんな求人や副業案件があるのか気になる方は、気軽に利用してみるとよいでしょう。
エンジニアのキャリア・スキルアップ相談窓口
当ブログの読者に選ばれている、実績豊富な転職エージェントを厳選しました。
【転職】年収・環境を改善したい
年収アップにこだわりたい方 (平均アップ額138万円の実績)
未経験・経験者問わず幅広く探したい方
業界に精通した担当者に相談したい方
ゲーム業界への転職を志望する方
エンジニア未経験からキャリアを築く方
【独立】フリーランスとして稼ぎたい
国内最大級のフリーランス案件数から比較したい方
週1〜3日など柔軟な働き方を希望する方
【学習】スキルに不安のある方向け(格安スクール「デイトラ」)