JSONフォーマッター・バリデーター
JSONの整形・バリデーション・ミニファイをブラウザ上で即座に実行。APIレスポンスの確認や設定ファイルの整形に。
他のオンラインツール
📖 つまずきやすいポイント
JSON の整形・バリデート・ミニファイをブラウザ内で行います。「整形しただけ」に見えて、実際には一度パースして書き直しているので、値が変わることがあります — JSON のパーサーは数値をどう表現するか、重複したキーをどうするかを仕様が完全には決めていないため、その部分は実装に委ねられています。整形前と整形後で意味が変わらない保証は、実はありません。
| ケース | 何が起きるか | どうする |
|---|---|---|
| 大きな整数が整形しただけで変わる | JavaScript の JSON.parse は、すべての数値を倍精度浮動小数点数として読み込みます — したがって 2 の 53 乗を超える整数は正確に表現できず、近い値に丸められます。9007199254740993 を整形すると 9007199254740992 になり、エラーも警告も出ません。実務で危険なのは、Twitter や Discord のような大きな ID、Snowflake ID、データベースの BIGINT の主キーで、整形して貼り直したデータが、元とは別のレコードを指すようになります。「整形しただけ」のつもりで値が壊れるので、疑う理由が生まれにくいのが最大の問題です。 |
大きな ID は文字列として持ってください — "id": "9007199254740993" と引用符を付ければ、パーサーは数値に変換しないので値は保たれます。実際、Twitter の API は早くからこの問題に対応して id_str というフィールドを別に返していました — 「計算に使わない数値は文字列にする」というのは、この分野では確立した設計判断です。既存のデータを扱う場合は、整形の対象に大きな整数が含まれていないかを先に確認してください — 判別は簡単で、16 桁を超える数値があれば疑うだけです (2 の 53 乗は 9,007,199,254,740,992 で 16 桁)。そして、整形の前後で diff を取る習慣を持ってください — 意図しない値の変化は、それでしか見つかりません。 |
| 重複したキーが黙って 1 つに減る | {"a":1,"a":2} のように同じキーが 2 回現れる JSON は、仕様上は「動作が未定義」です — RFC 8259 は「一意であるべき」と述べていますが、重複したときにどうするかは決めていません。実際の実装はほぼすべて後に現れたほうで上書きするので、整形すると {"a":2} になり、1 つ目の値は跡形もなく消えます。設定ファイルでこれが起きると深刻で、「設定を書いたのに効かない」という症状の原因が、上のほうに同じキーが既に書かれていたことだった、というのはよくある話です。整形はその証拠まで消してしまいます。 |
設定ファイルの JSON では、重複キーを検出できるリンタを使ってください — jsonlint や、エディタの JSON 拡張の多くが警告を出します。整形ツールは重複を「解決」してしまうので、検出には使えません — この 2 つは目的が違うと理解しておいてください。そして、重複キーが見つかったときは「どちらが正しいか」ではなく「なぜ 2 つ書かれたのか」を確認してください — 多くの場合、コピー&ペーストで設定を追記したときに、既存の記述に気付かなかったという経緯があり、片方を消すだけでは同じことが再発します。設定が長くなってきたら、キーをアルファベット順に並べておくと、重複が目で見て分かるようになります。 |
| コメント付きの JSON がエラーになる | 標準の JSON にコメントはありません。これは見落としではなく、仕様を作った Douglas Crockford が意図的に外したもので — コメントがパーサーへの指示子として使われはじめ、互換性を壊すことを避けるためでした。ところが実務では、tsconfig.json・.vscode/settings.json・.eslintrc.json のようにコメントを許す設定ファイルが広く使われています — これらは JSONC (JSON with Comments) という別の方言で、標準の JSON パーサーに通すと必ず失敗します。「JSON だと思っていたものが JSON ではなかった」というのが、この種のエラーの正体です。 |
JSONC を扱うなら、専用のパーサーを使ってください — Node なら jsonc-parser、VS Code の設定を読むツールはこれを使っています。コメントを含む JSON を標準の JSON に変換したいなら、コメントを削除してから通します — ただしその時点でコメントに書かれていた情報は失われるので、変換した結果を元のファイルに書き戻さないでください。より広い判断として — 設定ファイルにコメントが必要なら、そもそも JSON ではなく YAML や TOML を選ぶほうが素直です。「なぜこの値なのか」を残せないフォーマットは、設定ファイルとして重要な性質を 1 つ欠いています — 半年後に読む人にとって、その 1 行のコメントが設定そのものより価値を持つことは珍しくありません。 |
整形は「差分を読めるようにする」ために最も効きます。API のレスポンスをテストの固定データとしてリポジトリに置くなら、整形してからコミットしてください — ミニファイされた 1 行の JSON は、1 文字変わっただけで diff が全行になり、レビューが不可能になります。ただしキーの順序には注意が必要です — 整形ツールや言語によっては、キーをアルファベット順に並べ替えるものがあり、その場合は初回のコミットで全行差分になります。「整形するか」だけでなく「キーをソートするか」までチームで決めて、CI で機械的に適用してください — 人によって設定が違うと、意味のない差分がレビューを埋め尽くします。最後にセキュリティの注意を 1 つ — API レスポンスを整形ツールに貼る前に、Authorization ヘッダやトークンが本文に含まれていないかを確認してください。このページはブラウザ内で完結しますが、同じ操作を別のオンラインツールで行う習慣がつくと、いつか本番のトークンを外部に送ることになります。
📖 使い方
-
1
JSON を貼り付けAPI レスポンスや設定ファイルから JSON 文字列をコピーして入力欄にペーストします。
-
2
整形 or ミニファイを選択インデント幅を選んで「整形」ボタンを押すと読みやすく展開、「ミニファイ」で 1 行に圧縮されます。
-
3
バリデーションと修正構文エラーがあれば行番号と原因を表示します。JSON Pointer で問題箇所を特定しやすく、コピーもワンクリック。
❓ よくある質問
コメント付き JSON (JSON5 / JSONC) は扱えますか?
入力データはサーバーに送信されますか?
巨大な JSON (10 MB 以上) も扱えますか?
キーをアルファベット順にソートできますか?
🐛 このツールで問題が発生しましたか?
完全無料・登録不要。再現手順だけでも結構です。届いたご報告は運営者に直接届き、修正の参考にします。
ご報告ありがとうございます!
運営者に届きました。改善の参考にさせていただきます。