JSONツール
これらのJSONツールはすべてブラウザ内で動作します。ドキュメントを貼り付けたりドロップしたりすると、自分のマシン上で解析、比較、整形、検証が行われます。ペイロードがアップロードされることはありません。各ツールはブラウザのJSON.parseに頼らずRFC 8259を厳密に実装しているため、エラーには行と桁が付きます。
整形
検証
変換
JSONをCSVに変換
ネストも含めてスプレッドシートの表に変換
ツールを開くCSVをJSONに変換
表計算の書き出しを引用符込みで正確にレコード化
ツールを開くJSONからExcelへ
型付きのExcelワークブックを作成。拡張子を変えたCSVではない
ツールを開くJSON文字列化
ドキュメントを埋め込み用の文字列リテラルへエスケープ
ツールを開くJSONエスケープ解除
ログ行に埋まったエスケープから元のドキュメントを復元
ツールを開くExcelからJSON
スプレッドシートをJSONレコードに変換
ツールを開くJSONをTypeScriptに変換
サンプルからインターフェースを、省略可否込みで生成
ツールを開くJSONからZodへ
実行時に検証するZodスキーマを生成。型定義だけではない
ツールを開くJSONをGoに変換
jsonタグ付き構造体を、実際にマーシャルできる形で生成
ツールを開くJSONをPythonに変換
データクラス、TypedDict、Pydanticモデルを生成
ツールを開くJSONをC#に変換
適切な属性を付けたクラスやレコードを生成
ツールを開くJSONをJavaに変換
レコードやPOJOを生成し、nullになり得る値もボクシングで対応
ツールを開く
ブラウザベースのjsonツールはどんなときに使うべきですか?
ウェブ上のほぼすべてのJSONツールは、ドキュメントをサーバーに送信するフォームです。チュートリアルのコード片ならそれでも構いません。しかし、デバッグ対象の実際のペイロードでは、まず問題になります。本番のJSONにはアクセストークン、顧客レコード、内部ホスト名、アカウント識別子が含まれていることが多く、それを知らないエンドポイントに貼り付けることは、これらすべてを他人のアクセスログに引き渡すのと同じです。規制のある環境では判断の余地などなく、報告義務のあるインシデントです。
このサイトのツールは、サーバーという概念自体を排除しています。読み込むページは静的なHTMLとJavaScriptであり、ドキュメントを貼り付けると、タブで実行中のコードがそのまま解析します。検査すべきリクエストも、信用すべきエンドポイントも存在しません。これは「覗きません」という約束よりはるかに強い立場です。
この判断は速度にも効いています。アップロードも待ち行列も往復もないため、2 MBのドキュメントの整形は、大西洋を2回往復する時間ではなく、画面を再描画する程度の時間で終わります。さらに、機内でも、厳しく制限された社内ネットワークでも、未知の通信をすべて遮断するVPNの中でも動作します。
エンジンはパッケージの組み合わせではなく手書きで実装されています。これは聞こえ以上に重要です。パーサーは再帰ではなく反復で書かれているため、深くネストしたドキュメントでもJavaScriptのコールスタックを破壊する代わりにエラーを報告します。テストスイートには2万段階のネストを流し込むテストが含まれています。ドキュメントから来るすべてのキーはown propertyのガードを通して代入されるため、__proto__を含むペイロードが検査側ページの動作を変えることはできません。これは理論上の心配ではなく、JSONツールが実際に壊れる2つの経路です。
標準が存在する場所では、それに正確に従います。文法はRFC 8259、パッチドキュメントはRFC 6902、マージパッチはRFC 7386、推論と検証はJSON Schema Draft 2020-12です。標準が裁量を残している部分、たとえば比較時の配列要素の照合方法や、出力時のキーのソート有無は、ハードコードせず設定として公開し、各ページのリファレンステーブルにその挙動の細部まで記載しています。
どこから始めるべきかわからない場合の目安です。パースできないドキュメントにはJSON検証、一致するはずなのに一致しない2つのドキュメントにはJSON差分比較、読めないドキュメントにはJSON整形、そして自分で書いていないレスポンスの構造を記述する必要があるときにはJSONスキーマ生成を使います。
よくある質問
ペイロードが拒否される原因を調べるには、どのJSONツールを使えばよいですか?
まず「JSON検証」を使ってください。最初の構文エラーを正確な行と桁、そして問題の文字を指すキャレット付きで報告し、よくある原因を種類ごとに判定します。末尾のカンマ、シングルクォートの文字列、クォートされていないキー、対応が取れていない括弧、バイトオーダーマーク、ワープロから貼り付けたスマートクォートなどです。ドキュメントがほぼ妥当なら、ワンクリック修復で直せます。変更内容は、受け入れる前に正確に確認できます。
見た目が異なる2つのドキュメントなのに、「JSON差分比較」が変更なしと報告するのはなぜですか?
JSONではオブジェクトのキーの順序に意味がないからです。RFC 8259はオブジェクトを順序なしのコレクションと定義しているため、{"a":1,"b":2}と{"b":2,"a":1}は同じドキュメントであり、セマンティックな比較ではそのように報告されます。Unixのdiffのような行単位のツールはシリアライズされたテキストを比較するため、順序が入れ替わっただけのキーもすべて変更として報告します。整形されたAPIレスポンスに対してほとんど役に立たないのはこのためです。
サイズの上限はありますか?
メインスレッドで動作するツールは8 MBで打ち止めです。1回のパースでタブの応答が失われ始めるのがこの水準だからです。「JSON差分比較」はWeb Workerに処理を任せ、最大100 MBまで受け付けます。いずれの上限を超えた場合は、フリーズする代わりに明確なメッセージとともに拒否します。50 MBの比較には実際に時間がかかりますが、実行中もインターフェースは応答を保ちます。
JSONC(コメント付きJSON)にも対応していますか?
「JSON整形」は対応しています。入力では//と/* */のコメントおよび末尾カンマを受け付け、出力ではそれらを取り除けます。tsconfig.jsonや.eslintrc.jsonなどの設定ファイルには、まさにこれが求められる動作です。Validatorは意図的に厳格で、ドキュメントをRFC 8259どおりに判定します。APIがペイロードを受け入れるかどうかを問うているのだから、寛容な答えは間違った答えになるからです。
オフラインでも使えますか?
使えます。ツールのページを一度読み込めば、ネットワークを切っても動作し続けます。Wi-Fiを切って試してみてください。通信相手が存在しないのです。このサイトはAPIルートのない静的エクスポートで、どのエンジンもタブで実行中のJavaScriptそのものです。