無料の JSON フォーマッタ&バリデータ・オンライン
JSONを貼り付けて、瞬時にフォーマット、最小化、または検証できます。すべての処理はブラウザ内で行われます。
JSONとは?
JSON(JavaScript Object Notation)は、サーバーとウェブアプリケーション間でデータを交換するために使用される軽量データ形式です。人間が読みやすく、機械が解析しやすい形式です。このツールを使用すると、JSONデータのフォーマット、最小化、検証ができます, APIレスポンス、設定ファイル、データ構造をデバッグする開発者に最適です。
「Format JSON」が実際に行うこと
JSON は仕様レベルで空白に対して敏感ではありません、パーサーは {"name":"Alice","age":30} をインデントされたマルチライン形式と同じように読みます。目に見える違いは純粋に人間の読者のためです。フォーマット(「pretty-print」または「beautifying」とも呼ばれる)はネストレベル間にインデントを挿入し、各プロパティを独自の行に置き、キーと値の間のコロンの後にスペースを追加します。ミニフィケーションは逆を行います、文字列リテラルの内側を除いて空白のすべてのバイトを削除します。本番 HTTP レスポンスは通常、帯域幅を節約するためにミニフィケーションされます(エッジ CDN の gzip と Brotli が残りを処理)、開発中はフォーマットされたバージョンを読みます。標準フォーマット規約:インデントレベルあたり2スペース(現代の web デフォルト、Prettier のデフォルト、JavaScript エコシステム標準)、Python に触発された規約に従うコードベースには4スペース、またはタブインデントを好むプロジェクトには1タブ。JavaScript の JSON.stringify() は2番目の引数として整数または文字列を取り、まさにそれを制御します、JSON.stringify(data, null, 2) は2スペースインデントの出力を生成します。このツールは同じ3つのオプションを公開します。
JSON は厳格、つまずく規則
JSON の文法はその不寛容で知られています。オブジェクトキーは二重引用符で囲まれなければなりません(単一引用符は合法ではありません)。文字列値は二重引用符を使用しなければなりません。末尾のカンマなし オブジェクトの最後のプロパティや配列の最後の要素の後、JS 自体が末尾のカンマを許可するため、JavaScript 開発者にとって頻繁な驚きの源。コメントなし、YAML や JavaScript と異なり、JSON にはコメント構文がありません。undefined 値なし、JSON には null しかありません、JavaScript の undefined を JSON にエンコードしようとするとプロパティが完全に削除されます。数値は JSON 10進形式でなければなりません、先頭ゼロなし(007 違法)、16進数なし(0x7F 違法)、Infinity や NaN なし。文字列は有効な UTF-8 でなければなりません、ほとんどのパーサーは UTF-16 サロゲートペアの問題を許容しますが、仕様は整形された Unicode を要求します。重複キーは技術的に有効です、仕様によると、しかしほとんどのパーサーで未定義動作を生成します(通常は最後の値が勝ちます)。これらのルールを緩める JSON のいくつかのバリアント:JSON5(Aseem Kishore、2012)は末尾のカンマ、単一引用符、コメント、その他の人間工学的な緩和を許可します、JSONC(VS Code の tsconfig.json などで使用)は C スタイルラインコメントを許可した JSON です、HJSON はオプションのキー引用符で人間にやさしいことを目指します。どれも本来の JSON ではありません、独自のパーサーを必要とし、ほとんどの本番ツールは RFC 8259 ごとに厳密な JSON を期待します。
フォーマットされた JSON が価値を発揮する場面
- API レスポンスの読み取り。 REST エンドポイントは本番でミニファイされた JSON を返します。デバッグ中に検査するには、ここに貼り付け、清潔なインデントとキーカラー化で構造を見て、バグを見つけます。
- 構造化ログ行の読み取り。 現代のロギングスタック(Datadog、Splunk、Elasticsearch、CloudWatch)はログ行ごとに1つの JSON オブジェクトを単一行で出力します。複雑なログエントリを素早く読むには、ここでフォーマットします。
- 設定ファイルのレビュー。
package.json、tsconfig.json、composer.json、AWS IAM ポリシー、Kubernetes JSON マニフェスト、すべて一貫してフォーマットされた方が再レビューしやすいです。「Sort Keys」オプションは2つの設定を diff するのに有用なアルファベット順の正規順序を生成します。 - 2つの JSON ドキュメントを比較する。 両方を一貫したインデントとキーソートでフォーマットしてから、お気に入りの diff ツールで結果を比較します。正規化なしでは、空白やキー順序のみで異なる2つの意味的に同一の JSON はノイジーな diff を生成します。
- 手動で編集された JSON ファイルの検証。 貼り付け、Validate をクリック、構文エラーがあれば、位置とメッセージが正確にどこを見るべきかを伝えます。「unexpected token at line 47」で失敗するビルドにファイルを通すよりも速いです。
- 深くネストされた値へのパスを見つける。 Tree ビューを開き、関心のある値をクリックし、その JSONPath 式を見ます、
jqクエリの作成、テストでの JSONPath アサーション、コードでフィールドにアクセスするのに有用です。 - デプロイ前のミニフィケーション。 ブラウザバンドルに出荷される JSON 設定、埋め込まれた JSON-in-JS 文字列、またはバイトが重要な任意のコンテキスト、ミニフィケーションはすべてのフォーマット空白を削除します。
より広いツールエコシステム内の JSON
コマンドラインワークフローには、jq(Stephen Dolan、最初のリリース2012年)が標準的な JSON プロセッサです、フォーマット(jq .)、フィルタリング(jq '.users[] | .email')、変換、独自の簡潔な式言語による複雑なクエリを処理する小さな静的にリンクされたバイナリです。Python 標準ライブラリには1コマンドの pretty-print のための python -m json.tool が含まれます。JavaScript 組み込みの JSON.stringify(obj, null, 2) はブラウザ内/Node 内で最速のフォーマッタです。JSON Schema(現在ドラフト 2020-12、Henry Andrews、Austin Wright、Greg Dennis 他編集)は JSON ドキュメントが取るべき形を宣言する語彙を提供します、型制約、必須プロパティ、フォーマットバリデータ、条件論理、そして API 契約検証、OpenAPI 3.x 仕様、設定検証、JSON ベースのフォーム生成の標準です。JSONPath(Stefan Goessner、2007、2024年2月の RFC 9535 で標準化)は JSON のための XPath 風のクエリ言語で、jq のより簡単なサブセットや Postman、jsonpath-ng(Python)、AWS CLI などのツールで使用されます。JSON-LD(W3C 勧告、現在のバージョン 1.1 は2020年7月公開)は JSON をセマンティック web のリンクされたデータの規約で拡張し、Google が web ページの構造化データマークアップに推奨する形式です。JSON Patch(RFC 6902)と JSON Merge Patch(RFC 7396)は JSON ドキュメントの標準化された diff/patch 形式を定義します。
Tree ビュー、なぜ重要か
中程度のサイズの pretty-print された JSON ドキュメント(数百行)でも平らなテキストとしてナビゲートするのは難しいです。このツールの tree ビューは各オブジェクトと配列を展開可能なノードに折りたたみ、関心のあるレベルだけを見るためにクリックできるようにし、クリックしたノードの JSONPath 式を表示します。クリックでパスをコピーする機能は、「ドキュメントで欲しい値が見える」と「その値にアクセスするコードを書ける」の間の実用的な橋です、jq に、JSONPath クエリに、JavaScript のブラケット記法に、Postman のテストアサーションにパスを貼り付けます。深くネストされた API レスポンス(Stripe、Shopify、Salesforce、リッチドメインモデルを持つもの)には、tree ビュー + パスコピーが「フィールドが見える」から「アクセス式がある」までを2クリックで運ぶワークフローです。
プライバシー、ブラウザ内のみで検証
フォーマッタに貼り付けられた JSON は頻繁に実際の本番データです、ユーザー識別子を含む API レスポンス、セッショントークン、内部エンティティ ID、エンドポイント URL や機能フラグを含む設定値。サーバー側の JSON フォーマッタは各入力のコピーをログに取り込みます。このツールはブラウザ組み込みの JSON.parse() で JSON を解析し、結果の構造を JavaScript で歩き、文字列として再出力します、すべてあなたのブラウザタブ内で。Format をクリックする間に DevTools の Network タブを確認(リクエストは出ません)するか、読み込み後にページをオフライン(機内モード)にしてもフォーマッタはまだ動作します。本番 API レスポンス、内部設定、トークンや鍵を含む JSON、または見知らぬ人のハードドライブにコピーされたくないドキュメントに安全です。
よくある質問
なぜJSONの検証が失敗するのですか?
一般的な問題には、最後の項目の後の末尾のカンマ、ダブルクォートの代わりにシングルクォート、引用符のないキー、括弧の欠落などがあります。 JSONは厳格です, キーと文字列値はダブルクォートを使用する必要があります。
フォーマットと最小化の違いは何ですか?
フォーマットはインデントと改行を追加して人間が読めるようにします。最小化は不要な空白をすべて削除して本番使用のためにファイルサイズを削減します。データの内容はどちらの方法でも同じです。
サイズ制限はありますか?
ハード制限はありません。ツールはブラウザで実行されるため、非常に大きなJSONファイル(10+ MB)は古いデバイスでは遅くなる可能性があります。一般的なAPIレスポンスや設定ファイルでは瞬時に動作します。
「Sort Keys」は何をして、いつ使うべきですか?
「Sort Keys」は再帰的に各オブジェクトのキーをアルファベット順に並べ替えます。データの意味は変わりません、JSON オブジェクトのキー順は技術的に仕様によって未定義です(ほとんどのパーサーは挿入順を保持しますが)、しかし出力は正規になります。意味的に等価であるべき2つの JSON ドキュメントを diff するのに有用です(ソートなしでは、キー順の違いがノイジーな diff を生成します)、また再現可能なビルド出力を生成するのに有用です(同じデータは構築方法に関係なく、常にバイト同一の JSON にシリアル化されるべきです)。
JSON ドキュメントはアップロードされますか?
いいえ。すべての解析、検証、フォーマット、ソート、ツリーレンダリングは JSON.parse() と JavaScript を介してブラウザで行われます。貼り付けられた JSON はネットワークを横断しません。Format をクリックする間に DevTools の Network タブを確認(リクエストは出ません)するか、読み込み後にページをオフライン(機内モード)にしてください。独自の API レスポンス、内部設定、トークンやセッションデータを含む JSON、または NDA でカバーされているものすべてに安全です。