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