JSON整形ツール【無料・登録不要】インデント・圧縮・構文チェック|エラー箇所を日本語で表示
JSON を貼り付けるだけで、見やすくインデントを付けて整形できる無料ツールです。1 行への圧縮や、キーの並べ替えにも対応しています。書き方に誤りがあるときは、何行目の何文字目が、なぜ間違っているのかを日本語で表示します。
同じキーが 2 回書かれている場合や、プログラムで読むと桁が変わってしまう大きな整数があるときも、注意を表示します。入力したデータはお使いのブラウザの中だけで処理され、サーバーには一切送信されません。
JSON ファイルをここにドラッグ&ドロップ(5MB まで)
入力した JSON はお使いのブラウザ内だけで処理されます。サーバーへの送信や保存は一切行いません。
使い方
JSON を整形する
- 入力欄に JSON を貼り付けます。貼り付けると同時に構文がチェックされ、出力欄に整形された JSON が表示されます。
- 「インデント」で、スペース 2 つ・スペース 4 つ・タブから選べます。
- 「出力をコピー」でコピーするか、「出力をファイルとして保存」で formatted.json として保存します。
試しに使ってみたいときは、「サンプルを入れる」を押してください。
1 行に圧縮する
「モード」で「圧縮」を選ぶと、改行やインデントなどの空白を取り除いて 1 行にまとめます。API のテストでリクエストの本文に貼るときや、設定値として埋め込むときに便利です。保存するときのファイル名は minified.json になります。
キーを並べ替える
「キーを並べ替える」にチェックを入れると、オブジェクトのキーを文字コード順(英字は A〜Z、a〜z の順)に並べ替えます。入れ子になったオブジェクトの中も並べ替えます。配列の中の順番は変えません。2 つの JSON を見比べるときに、キーの順番をそろえておくと違いを見つけやすくなります。
エラーの場所を確認する
JSON の書き方に誤りがあると、エラーの行と文字の位置、原因と直し方が表示されます。「入力欄のエラーの場所を選択」を押すと、入力欄の該当箇所が選択されます。よくあるエラーは、このページの「よくあるエラーと直し方」でも解説しています。
ファイルから読み込む
点線の枠に JSON ファイルをドラッグ&ドロップするか、「ファイルを選択」から選びます(5MB まで)。文字コードは、UTF-8・Shift_JIS・UTF-16 を自動で判定します。保存するときは UTF-8 になります。
整形のルール
このツールは、データの中身が変わらないことを優先して整形します。変わるものと変わらないものは、次のとおりです。
| 対象 | 整形後 |
|---|---|
| 値と値の間の改行・空白 | 指定したインデントで整え直す(圧縮のときは取り除く) |
| キーと値の間 | 「”キー”: 値」のように「:」の後ろに空白を 1 つ入れる(圧縮のときは入れない) |
| 数値 | 書かれたとおりに残す(1.0 や 1e3 もそのまま。大きな整数の桁も落ちない) |
| 文字列 | 書かれたとおりに残す(\u3042 のようなエスケープもそのまま) |
| キーの順番 | 変えない(「キーを並べ替える」をオンにしたときだけ並べ替える) |
| 中身が空のオブジェクト・配列 | {} と [] の形にする |
| 先頭の BOM | 取り除く |
JavaScript の JSON.parse で読み込んでから JSON.stringify で書き出す方法でも整形できますが、その方法では数値がいったん JavaScript の数値に変換されるため、大きな整数の下の桁が変わったり、1.0 が 1 になったりします。このツールは自分で JSON を解析しているので、そうした変化は起きません。
JSONとは?
JSON(JavaScript Object Notation)は、データを文字で表すための書き方です。名前のとおり JavaScript のオブジェクトの書き方がもとになっていますが、JavaScript 以外の多くのプログラミング言語でも読み書きできるため、Web API のデータのやり取りや、設定ファイル(Node.js の package.json など)で広く使われています。仕様は RFC 8259 と ECMA-404 で定められています。
JSON で使える値は、次の 6 種類だけです。
| 種類 | 書き方の例 | 説明 |
|---|---|---|
| オブジェクト | {“name”: “Taro”, “age”: 20} | 「”キー”: 値」の組を { } で囲み、「,」で区切る。キーは必ずダブルクォートで囲む |
| 配列 | [“a”, “b”, “c”] | 値を [ ] で囲み、「,」で区切る |
| 文字列 | “こんにちは” | 必ずダブルクォートで囲む |
| 数値 | 20、-1.5、1e3 | 10 進数だけ。先頭に余分な 0 や + は付けられない |
| 真偽値 | true、false | すべて小文字 |
| null | null | 値がないことを表す。すべて小文字 |
JavaScript のオブジェクトの書き方よりも規則が厳しく、コメント、シングルクォート、最後の要素の後ろの「,」、undefined などは使えません。この違いが、次の「よくあるエラー」の原因の多くを占めます。
なお、システムどうしで JSON をやり取りするときの文字コードは UTF-8 と決められています(RFC 8259)。文字コードについては「UTF-8とは?」で解説しています。
よくあるエラーと直し方
JSON のエラーの多くは、次のどれかです。左の例をこのツールに貼ると、エラーの場所と直し方が表示されます。
| 間違った例 | 原因 | 正しい書き方 |
|---|---|---|
| {“a”: 1, “b”: 2,} | 最後の要素の後ろに「,」がある | {“a”: 1, “b”: 2} |
| {‘a’: ‘x’} | シングルクォートを使っている | {“a”: “x”} |
| {a: 1} | キーをダブルクォートで囲んでいない | {“a”: 1} |
| {“a”: 1 “b”: 2} | 「,」が抜けている | {“a”: 1, “b”: 2} |
| {“a”: 1} // メモ | コメントは使えない | {“a”: 1}(コメントを消す) |
| {“path”: “C:\Users”} | 「\」はエスケープの記号なので、そのままでは書けない | {“path”: “C:\\Users”} |
| {“a”: True}、{“a”: None} | Python の書き方になっている | {“a”: true}、{“a”: null} |
| {“a”: NaN}、{“a”: undefined} | JSON にない値を使っている | {“a”: null} |
| {“zip”: 0123} | 数値の先頭に余分な 0 がある | {“zip”: “0123”}(番号は文字列にする) |
| {“a”: 1} | 全角スペースが入っている | {“a”: 1}(半角スペースにする) |
文字列の途中で改行している、というエラーが出たときは、ダブルクォートの閉じ忘れがないかも確認してください。文字列の中で改行を表したいときは、\n と書きます。
気をつけたい「エラーにならない」落とし穴
次の 2 つは、JSON の書き方としてはエラーになりませんが、読み込むプログラムによってはデータが変わってしまうことがあります。このツールでは、見つけたときに注意を表示します。
大きな整数は、桁が変わることがある
JavaScript の数値は、整数を正確に表せるのが 9007199254740991(2 の 53 乗 – 1)までです。これを超える整数を JSON.parse で読み込むと、下の桁が変わってしまいます。たとえば、ブラウザの開発者ツールのコンソールで次のように実行すると、結果は 12345678901234567000 になり、最後の 3 桁が変わります。
JSON.parse('{"id": 12345678901234567890}').id
RFC 8259 でも、この範囲を超える数値は、プログラムどうしで同じ値として扱えない場合があると注意されています。データベースの ID など桁の大きい番号を JSON でやり取りするときは、”12345678901234567890″ のように文字列にしておくと安全です。
同じキーが 2 回あると、片方が消える
{“a”: 1, “a”: 2} のように、1 つのオブジェクトに同じキーが 2 回ある JSON は、RFC 8259 では「キーは重複しないようにすべき(SHOULD)」とされ、読み込んだときの動きはプログラムによって違います。JavaScript の JSON.parse や Python の json モジュールでは、後に書いた値(この例では 2)だけが残り、前の値は消えます。設定ファイルを書き足していくうちに、同じキーを 2 回書いてしまうことがあるので注意しましょう。
このツールの整形では、どちらのキーも消さずにそのまま出力します。
コマンドで JSON を整形する(Python)
Python が入っているパソコンなら、コマンドでも JSON を整形できます。Windows の PowerShell では、次のように実行します(data.json は整形したいファイルの名前に置き換えます)。
py -m json.tool --no-ensure-ascii data.json
整形した結果が画面に表示されます(インデントはスペース 4 つ)。–no-ensure-ascii を付けないと、日本語が \u592a のようなエスケープの形で表示されます。JSON に誤りがあるときは「Expecting property name enclosed in double quotes: line 3 column 1 (char 12)」のように、英語でエラーの場所が表示されます。
よくある質問
入力したデータは保存されませんか?
保存されません。整形や構文チェックはすべてお使いのブラウザの中で行われ、サーバーへの送信も保存も行いません。ページを閉じると入力内容は消えます。とはいえ、パスワードやアクセスキーなどの秘密の情報は、どのツールであっても貼り付けないようにするのが安全です。
整形すると、データの内容が変わりませんか?
変わりません。変わるのは値と値の間の改行と空白だけで、数値や文字列は書かれたとおりに残します。「キーを並べ替える」をオンにした場合は、キーの順番が変わります(値は変わりません)。
コメント付きの JSON(JSONC)や JSON5 は使えますか?
使えません。このツールは、RFC 8259 の JSON の決まりどおりにチェックします。コメントや最後の「,」があるとエラーとして場所を表示するので、それらを取り除いて標準の JSON に直すときに使えます。
どのくらい大きな JSON まで扱えますか?
ファイルの読み込みは 5MB までです。入れ子(オブジェクトや配列の中にオブジェクトや配列があること)は 1000 段まで扱えます。
関連する記事・ツール
- JavaScriptとは?できること・歴史・Javaとの違いと、ブラウザで今すぐ試す方法
- UTF-8とは?仕組み・バイト数・BOMの有無をわかりやすく解説
- XML整形ツール【無料・登録不要】インデント・圧縮・構文チェック|サクラエディタ用マクロ付き
- CSV ⇄ JSON 変換ツール
- JWT デコーダー
- Base64エンコード・デコードツール【無料・登録不要】日本語・ファイル対応