結論から
- ブラウザで整形: FormatArc の JSON Formatter に貼り付ければ完結(データはブラウザ内のみ)
- ターミナルで整形:
echo '{...}' | jq .またはpython3 -m json.tool - コード内で整形: JavaScript/Node.js では
JSON.stringify(data, null, 2)
3つのアプローチを順に解説します。よくあるエラーの対処法と使い分けの判断基準も後半で紹介します。
JSON 整形とは
JSON(JavaScript Object Notation)はデータのやり取りで最も広く使われるフォーマットの一つです。API レスポンスや設定ファイルなど、さまざまな場面で目にします。
しかし、圧縮(minify)された JSON は人間には読みにくいため、整形(pretty-print)して構造を視覚的に把握することが日常的に必要になります。
よくある JSON の構文エラー
JSON の文法は2つの公式仕様で定義されています。RFC 8259(IETF 標準「The JavaScript Object Notation (JSON) Data Interchange Format」)と ECMA-404(ECMA 標準「The JSON Data Interchange Syntax」)です。どちらも同じ構文を定義しているため、以下のルールはフォーマッターの独自仕様ではなく、すべて仕様そのものに由来します。
1. 末尾カンマ(trailing comma)
{
"name": "example",
"value": 42,
}
最後のプロパティの後にカンマがあると、JSON としては不正です。JavaScript では許容されますが、JSON の仕様では禁止されています。
2. シングルクォート
{'name': 'example'}
JSON ではダブルクォート " のみが有効です。シングルクォート ' は使えません。
3. キーのクォート忘れ
{name: "example"}
JSON ではすべてのキーをダブルクォートで囲む必要があります。
JSON 構文エラー修正早見表
以下の表は、よくある構文エラーと RFC 8259 / ECMA-404 が求める修正方法を対応づけたものです。
| 誤り | 不正な例 | 修正方法 |
|---|---|---|
| 末尾カンマ | {"a": 1,} |
最後の値の後のカンマを削除する: {"a": 1} |
| シングルクォート | {'a': 'b'} |
ダブルクォートを使う: {"a": "b"} |
| キーのクォート忘れ | {a: 1} |
すべてのキーをダブルクォートで囲む: {"a": 1} |
| コメント | {"a": 1} // note |
JSON にコメント構文はない。コメントを削除する |
| 先頭ゼロ | {"a": 01} |
数値の先頭にゼロは置けない: {"a": 1} |
| 数値の正符号 | {"a": +1} |
先頭の + を外す: {"a": 1} |
| 16進数 / 8進数 | {"a": 0x1F} |
10進数表記のみ許される: {"a": 31} |
NaN / Infinity |
{"a": NaN} |
JSON の値として無効。数値か null を使う |
| undefined 値 | {"a": undefined} |
undefined は JSON の値ではない。null を使う |
| エスケープされていない制御文字 | "..." 内の改行 |
文字列内では \n としてエスケープする |
| エスケープされていないバックスラッシュ | {"a": "C:\path"} |
バックスラッシュをエスケープする: {"a": "C:\\path"} |
| 値のシングルクォート | {"key": 'value'} |
文字列の値もダブルクォートが必要: {"key": "value"} |
JSON.stringify() で Pretty Print する
JavaScript や Node.js では、JSON.stringify() の第3引数にインデント幅を指定するだけで整形済みの JSON が得られます。
const data = { name: "Alice", age: 30, roles: ["admin", "editor"] };
// 2スペースのインデントで整形
console.log(JSON.stringify(data, null, 2));
出力結果:
{
"name": "Alice",
"age": 30,
"roles": [
"admin",
"editor"
]
}
第2引数はフィルター用の replacer 関数または配列です。すべてのプロパティを残す場合は null を渡します。
タブ文字でインデントしたい場合は次のように書きます。
JSON.stringify(data, null, "\t");
コマンドラインで JSON を整形する
jq を使う方法
jq は軽量なコマンドラインの JSON プロセッサです。パイプで渡すだけで整形できます。
echo '{"name":"Alice","age":30}' | jq .
Python を使う方法
Python に標準搭載されている json モジュールでも整形できます。
echo '{"name":"Alice","age":30}' | python3 -m json.tool
curl のレスポンスを整形する
API のデバッグ時には、curl と jq を組み合わせるとレスポンスをそのまま整形できます。
curl -s https://api.example.com/data | jq .
ブラウザで手軽に整形する
FormatArc の JSON Formatter を使えば、ブラウザ内だけで JSON を整形できます。データはサーバーに送信されないため、業務データや API レスポンスも安心して貼り付けられます。
使い方
- 入力欄に JSON を貼り付ける
- 「実行」ボタンを押す
- 整形結果をコピーする
たったこれだけのステップで、読みやすい JSON が手に入ります。


整形前に JSON を検証する
JSON が壊れていると整形に失敗します。原因の多くは末尾カンマ、シングルクォート、キーのクォート忘れ(上記参照)です。設定ファイルにコメントを残したい場合は JSONC や JSON5 などの方法を検討してください。エラーメッセージに文字位置が含まれていても、大きなファイルでは該当箇所を見つけにくいことがあります。
FormatArc の JSON Formatter はエラー発生箇所の行番号を表示するため、問題の特定が容易です。よくあるパースエラーの原因と対処法は JSON Parse Error の解決方法 で詳しく解説しています。
Chrome 拡張で JSON を自動整形する
ブラウザで API エンドポイントを直接開いて確認することが多い場合は、Chrome 拡張を使う方法もあります。JSONView や JSON Formatter など、代表的な拡張の違いと選び方はJSON整形のChrome拡張おすすめ比較で解説しています。
他のデータ形式との連携
JSON の整形は、フォーマット間の変換を含むワークフローの一部になることがよくあります。
- YAML と JSON の違い — どちらを使うべきかの判断基準
- YAML を JSON に変換する方法 — Kubernetes 設定や CI ファイルの変換
- CSV を JSON に変換する方法 — スプレッドシートのエクスポートを JSON 化
- JSON の書き方ガイド — 正しい JSON を書くための基本
- formatarc CLI の使い方 — ターミナルから JSON を整形する方法
- curl レスポンスの JSON を整形する方法 — API デバッグ時に curl の出力を jq や python で即座に整形
今すぐ試してみる
整形したい JSON があれば、JSON Formatter を開いてデータを貼り付けるだけです。会員登録もサーバー送信も不要で、すぐに整形結果が得られます。
まとめ
- JSON の整形(Pretty Print)は開発・運用で日常的に必要な作業
JSON.stringify(data, null, 2)でコード内から手軽に整形できる- コマンドラインでは
jqやpython3 -m json.toolが便利 - よくあるエラーは末尾カンマ、シングルクォート、キーのクォート忘れ
- FormatArc ならブラウザだけで安全に整形できる