mygems

JSONを整形して読みやすくする方法(2026年版)

コマンド1つで、4万文字の1行が読みやすいJSONに。ターミナル、エディタ、ブラウザ、スマホでの整形方法を、Webサイトに貼り付けずに紹介します。

執筆: mygems ·

JSONの整形とは、機械が省いた改行とインデントを加えて、4万文字の1行を形の見えるものに変えることです。たいていのエディタやターミナルなら、コマンド1つでできます。実際に決めることは、インデントの幅と、整形のためにデータをWebサイトに貼り付けるかどうかだけです。

先に結論

  • ターミナルで: jq . file.json、または python3 -m json.tool file.json。
  • VS Codeで: ファイルを開いて Shift+Alt+F(Macは Shift+Option+F)。
  • ブラウザで: JSONビューアを内蔵しているFirefoxで .json のURLを開き、Pretty Print を押します。
  • スマホで: テキストをWebサイトに貼り付けるのではなく、Beautifyコマンドのある JSON アプリを使います。
  • そもそも整形できない: まだ有効なJSONではありません。先にそちらを直します。整形ツールのエラーメッセージが場所を教えてくれます。

整形で変わるもの、変わらないもの

整形(プリティプリント)が加えたり取り除いたりするのは、トークンの間にある空白だけです。文字列の外にあるスペース、タブ、改行のことです。正しい整形ツールは値には一切触れません。つまり、次の2つは同じドキュメントです。

{"id":7,"tags":["a","b"],"owner":{"name":"Ana"}}
{
  "id": 7,
  "tags": [
    "a",
    "b"
  ],
  "owner": {
    "name": "Ana"
  }
}

ミニファイはその逆で、省略できるスペースと改行をすべて取り除きます。ネットワークで送るときや、1行しか受け付けない設定欄に貼るときに使います。どちらの方向でも、データの意味は変わりません。自分で書いていないファイルでも、安心して整形し直せるのはそのためです。

多くのツールでは、整形の隣にあるのに、害はなくても変更になる操作が2つあります。各オブジェクトをアルファベット順に並べ替えるキーのソートと、ドキュメント全体を1つの文字列にするエスケープです。副作用としてではなく、意図して行ってください。

ターミナルで

入れておくなら jq です。

jq . data.json                 # pretty, 2-space indent
jq --indent 4 . data.json      # 4 spaces
jq --tab . data.json           # tabs
jq -c . data.json              # minified, one line
jq -S . data.json              # keys sorted A–Z

ファイルをその場で整形するときは、一時ファイルに書き出してから戻します。jq . data.json > data.json では、jqが読む前にファイルが空になってしまいます。

jq . data.json > tmp.json && mv tmp.json data.json

Python には整形機能が付いているので、Python 3があるマシンならどこでも使えます。

python3 -m json.tool data.json
python3 -m json.tool --indent 4 --sort-keys data.json
python3 -m json.tool --compact data.json

実データで差が出る点があります。json.tool は整数以外の数値をPythonのfloatとして読むので、1.10 のような値は 1.1 になって出力されます。jq 1.7以降は、数値リテラルを書かれたとおりに保ちます。価格、バージョン番号、先頭の桁が意味を持つIDがファイルにあるなら、出力を確認してください。

エディタで

VS Code: Shift+Alt+F でドキュメント全体を整形します。コマンドパレットの Format Selection なら一部だけです。[json] ファイルを頻繁に編集するなら、"editor.formatOnSave": true を設定しておくと便利です。インデントはエディタのタブサイズ設定に従います。

Sublime Text、Notepad++、JetBrains系IDE は、どれもJSONを整形できます。標準機能(JetBrains:Code → Reformat Code)か、1行で入るプラグイン(Notepad++:JSON Viewer や JSTool)です。

Prettier は、プロジェクト全体のJSONの見た目をそろえたいときに向いています。npx prettier --write "**/*.json" を実行します。

ブラウザで

Firefox は、あらゆるJSONレスポンスを自動で整形します。折りたたみできる JSON タブ、Raw Data タブ、Pretty Print ボタンがあります。何もインストールせずにAPIのレスポンスを読むなら、これがいちばん手早い方法です。

ChromeとEdge は、最近のバージョンなら生のJSONの上に Pretty-print のチェックボックスが出ます。それ以上のこと(折りたたみ、キーで検索)には拡張機能が必要です。

オンライン整形ツールの問題

このテーマで検索すると、1ページ目は大きなテキストボックスがあるWebサイトばかりです。使えますが、問題は何を貼り付けるかです。

アクセストークン入りのAPIレスポンス、データベースのパスワード入りの設定ファイル、顧客データのエクスポート。こうしたものが、日常的に整形ツールに貼り付けられています。そのテキストがブラウザの中にとどまるのか、サーバーに送られて記録されるのかを、ページから確かめる方法はありません。「共有」ドキュメントを、推測できるURLで保存していたサイトが見つかった例もあります。

ルールは単純です。公開チャットに貼れないものは、ローカルで整形します。上で挙げた方法は、どれも手元のマシンで動きます。

インデントの選び方

  • スペース2つが事実上の標準です。jq、Prettier、たいていのJavaScript系ツール、たいていのAPIドキュメントがそうです。
  • スペース4つは、ネストの深いドキュメントを広い画面で読むのに向いています。Pythonの慣習でもあります。
  • タブは、読む人が自分で幅を選べて、ファイルも少し小さくなります。

どれも間違いではありません。プロジェクトごとに1つ選び、整形ツールで強制しましょう。そうすれば、差分に空白の変更ではなくデータの変更が出ます。

iPhoneとiPadで

スマホはJSONがいちばん読みにくい場所です。iOSは .json ファイルを改行のないプレーンテキストで表示するからです。開き方はこちらにまとめています。整形はその次の手順です。

Smart Jsonでは、Beautify が一貫したインデントでドキュメントを整形し、Minify が1行にまとめ、Sort keys A–Z が各オブジェクトを並べ替えます。3つとも元に戻せます。テキストを解析できないときは、中途半端に有効なものを整形せず、問題を行と列つきでバナーに表示します。Fix は、よくある原因であるコメント、末尾のカンマ、シングルクォート、引用符のないキーを直します。

ミニファイされたJSONドキュメント上のドキュメントアクションメニュー。Formatの下にBeautify、Minify、Sort keys A–Z、Auto-fix syntaxがある
Format:Beautify、Minify、Sort keys
Beautify後の同じ注文ドキュメント。38行の行番号付きでインデントされ、ステータスバーにValid JSON, depth 6と表示されている
1行のドキュメントをBeautifyしたところ
JSON Editor: Smart JsoniPhone・iPad

iPhoneとiPadでBeautify、Minify、Sort keys。オフラインで動き、JSONが壊れているときはやさしい言葉でエラーを知らせます。Webサイトには何も貼り付けません。

できること

整形に失敗するとき

整形ツールは、有効なJSONでないものを受け付けません。エラーは、たいてい位置で示されます。line 1, column 3,912 のような形です。ミニファイされたドキュメントは1行なので、手がかりは列です。よくある原因は、末尾のカンマ、シングルクォート、コメント、引用符のない値です。よくあるエラーは、すべてこちらで解説しています。各メッセージの意味も載せています。

よくある質問

JSONを整形して読みやすくする(プリティプリントする)には?
ターミナルでは jq . file.json または python3 -m json.tool file.json を実行します。VS Codeでは Shift+Alt+F(Macは Shift+Option+F)を押します。Firefoxでも、.json のURLを開くと自動で整形されます。
JSONを整形するとデータは変わりますか?
いいえ。プリティプリントとミニファイが変えるのはトークン間の空白だけで、値は変わりません。キーのソートとエスケープは別の操作で、ドキュメントを書き換えます。ただしソートでは、データの意味は変わりません。
オンラインのJSON整形ツールは安全ですか?
公開データなら問題ありません。トークン、パスワード、個人情報を含むものはおすすめしません。貼り付けた内容をサイトが保存しているかどうか、確かめようがないからです。jq、Python、エディタ、オフラインアプリでローカルに整形してください。
JSONをミニファイするには?
jq -c . file.json または python3 -m json.tool --compact file.json を実行します。たいていのJSONエディタにも Minify コマンドがあります。ミニファイすると、省略できるスペースと改行がすべて消えます。
JSONが整形できないのはなぜ?
有効なJSONではないからです。整形ツールは推測で直しません。エラーメッセージに行と列が出ます。よくある原因は、末尾のカンマ、シングルクォート、コメント、引用符のないキーです。
JSONのインデントはスペース2つと4つのどちらがよいですか?
どちらでも構いません。JavaScript系ツールやAPIドキュメントではスペース2つが最も一般的で、Pythonのプロジェクトでは4つがよく使われます。大切なのは、整形ツールで強制して、1つを一貫して使うことです。

mygems — Smart Jsonを開発。1つのドキュメントをテキスト、ツリー、グラフで表示する、iPhoneとiPad向けのJSONエディタです。