JSONフォーマッター・バリデーター

ブラウザ内で動作し、何もアップロードされません

JSONを整形・検証・圧縮します。エラーは正確な行と列で示されます。

Input

Formatted JSON appears here as you type.

Ready
Ln 1, Col 1

このフォーマッターでできること

JSONは、ほとんどのWeb APIがリクエストやレスポンスのボディに使う形式です。サーバーは通常、空白や改行をすべて取り除いた圧縮済みのJSONを送ってきます。コンパクトですが読みにくい形です。整形(pretty-print)するとインデントが付き、どのキーがどのオブジェクトに属しているかがわかります。圧縮(minify)はそれを再び取り除きます。

JSONを整形するにはまずパースする必要があるため、整形と同時に検証も行われます。テキストが正しいJSONでない場合は、パースが止まった行と列、そこで期待されていたもの、よくある原因が表示されます。コメント、末尾の余分なカンマ、シングルクォート、クォートなしのキー、Pythonの True/None は自動で修正できます。ツールはまず変更点をすべて一覧にし、確認するまで何も適用しません。

ここでの整形が値を変えることはありません。このツールは JSON.parse ではなく独自のパーサーを使うため、数値は書かれたとおりの桁を保ち(12345678901234567890 も 1.50 もそのまま)、\u00e9 のようなエスケープはエスケープのまま、重複したキーも元の位置に残ります。2^53を超える整数や2回出てくるキーなど、JSON.parse だと変わってしまうデータがある場合は、Inspector の Data warnings に一覧表示されます。

使い方

  1. 1JSONを Input パネルに貼り付けるか、.json ファイルをドロップするか、Ctrl+O で開きます(最大5 MB)。Examples に試せるサンプルがあります。
  2. 2Output タブには入力中の結果がリアルタイムで表示されます。インデント(スペース2つ、スペース4つ、タブ)の選択、キーの並べ替え、Pretty と Minified の切り替えができます。行番号横の矢印でオブジェクトや配列を折りたためます。
  3. 3入力そのものを書き換えるには、Format(Shift+Alt+F)または Minify(Shift+Alt+M)を使います。Ctrl+Z でどちらも元に戻せます。Clear や適用した修正も同様です。
  4. 4JSONが無効な場合は、ステータスバーと Output タブに場所が表示されます。F8でカーソルをエラー位置に移動するか、Review fixes で自動修正の内容を確認します。
  5. 5Tree、Table、JSONPath、Compare では同じデータを別の形で表示します。ツリーのノードを選んでパスや値をコピーしたり、$.items[?(@.price < 10)].id のような式で検索したり、2つ目のドキュメントを貼り付けて差分を一覧にしたりできます。
  6. 6出力をコピーするか、整形済みまたは圧縮済みでダウンロードします(Ctrl+S)。? を押すとすべてのキーボードショートカットが表示されます。

トラブルシューティング

末尾のカンマ:} の前の , を削除してください
JSONでは、オブジェクトや配列の最後の要素の後にカンマを置けません。削除するか、Review fixes を使ってください。JavaScriptのコードや手書きの設定ファイルが原因であることが多いです。
プロパティ名はダブルクォートで囲む必要があります
このテキストはJSONではなく、JavaScriptのオブジェクトリテラル({name: 'x'})です。キーと文字列はすべてダブルクォートが必要です。Review fixes で追加できます。
True はPythonの書き方です。JSONでは true を使います
データがPythonの print() や str() で出力されています。JSONを出力するには json.dumps() を使うか、Review fixes で True、False、None を置き換えてください。
予期しない入力の終わり:1行目で開いたオブジェクトが閉じていません
すべての { と [ が閉じる前にテキストが終わっています。コピーしたレスポンスが途中で切れている可能性が高いので、もう一度コピーするか、ファイルに保存してから開いてください。
JSONの値の後に予期しない内容があります
JSONの値が2つ以上続いています。配列で囲むか、改行区切りのJSON(NDJSON)のログであれば1行ずつ確認してください。
テキストがバイトオーダーマーク(BOM)で始まっています
ファイルが「BOM付きUTF-8」で保存されています。多くのパーサーは先頭のこの見えないマークを受け付けません。BOMなしのUTF-8で保存し直すか、Review fixes で削除してください。
文字列を複数行にまたがらせることはできません
文字列の中に実際の改行が入っています。改行を含むテキストを貼り付けたときによく起こります。改行を \n に置き換えてください。
コード内の数値がJSONの数値と違います
9,007,199,254,740,991を超える整数は、JavaScriptでパースすると精度が失われるため、19桁のIDが変わることがあります。このツールは書かれたとおりの桁を表示して警告します。APIでは、こうしたIDを文字列として送ってください。

よくある質問

JSONはどこかにアップロードされますか?

いいえ。パース、整形、すべての表示はブラウザのタブ内で動作します。再読み込みしても消えないように、貼り付けた内容は消去するかタブを閉じるまで、このタブのsession storageに保存されます。Copy link は入力をリンクの # の後ろに入れます。ブラウザはこの部分をサーバーに送りませんが、リンクを渡した相手は内容を読めます。インデントなどの設定はこのブラウザに保存されます。

整形するとデータは変わりますか?

いいえ。大きな数値、エスケープ、重複したキーも含め、値は書かれたとおりにコピーされます。意図的にテキストを変えるオプションは2つだけです。Sort keys はキーを並べ替え(文字コード順なので大文字が小文字より先)、Minify は文字列の外の空白を取り除きます。

重複したキーはどうなりますか?

書かれたとおりに残して表示し、警告を出します。JSONの標準では重複キーの扱いが定義されていません。JSON.parse や多くのライブラリは最後の値だけを残すため、このドキュメントを読むコードにはおそらく片方しか見えません。Table、Compare、JSONPath の各表示も「最後の値が有効」というルールに従います。

どのJSONPath構文に対応していますか?

一般的なGoessner構文に対応しています。ルートを表す $、.key と ['key']、インデックス(負の値も可)、[*] と再帰検索の ..、[0,2] のような和集合、[1:3] のようなスライス、[?(@.price < 10 && @.inStock)] のようなフィルターです。フィルターは数値をJavaScriptの数値として比較するため、2^53を超える整数の比較は近似になります。

どのくらいの大きさのファイルまで扱えますか?

5 MBまでのファイルはそのまま開けます。一般的なノートPCなら、約4 MBのドキュメントの検証と整形は1秒もかかりません。約200 KBを超えると、入力が止まるのを待ってから再チェックします。2,000階層を超えるネストはエラーになります。