本文へスキップ
jsonbeautifiers
日本語

このサイトについて

ここにあるツールはすべて、単一のJSONパーサーへの視点です。JSON.parseを包むのではなく、ゼロから書きました。その決定こそがこのサイトの存在理由です。

なぜパーサーを書くのか

組み込みのパーサーを包むのは当たり前の選択で、オンラインのJSONツールはほぼすべてそうしています。検証がただで手に入ります。同時に、外側からは直せない3つの問題も手に入ります。

エラーが役に立たない。 組み込みのパーサーは問題をひとつ報告して止まります。コンパイラ向けに書かれたメッセージだけを返し、どうすべきかの示唆はなく、いくつかのランタイムでは行番号すらありません。壊れたペイロードを抱えた開発者に必要なのは、正確な文字と、そこで何が期待されていたのかと、直し方です。それを得るには、走査そのものを自分で持つしかありません。

データを書き換える。 12345678901234567890をパースして文字列化し直すと、12345678901234567000が返ります。何の警告もありません。そう作られた整形ツールは、何かを表示する前にすでにペイロードを変えています。IDや金額にとっては、何事もないように見える重大なバグです。当サイトの整形ツールはすべての数値のソーステキストをそのまま出し直すので、これは起こりえません。詳しい説明はこちら

「ほぼJSON」の入力に対して何もできない。 末尾カンマ、シングルクォート、Pythonのリテラル、コメント、チャットクライアントから貼り付けられたノーブレークスペース。これらを直し、何が変わったかを説明するには正確に検出する必要があり、それもまた走査を自分で持つということです。

それで得られたもの

  • 行、列、ハイライトされた範囲、期待されていたもの、そして直し方を伴うエラー。
  • 1文書中のすべてのエラーを一度に報告。試行ごとに1つずつではなく。
  • 貼り付けたとおりの姿で整形を通過する数値。
  • 重複キーを両方の位置とともに報告。
  • 不可視文字を正確に名指し。ノーブレークスペースは「4行12列のノーブレークスペース」として報告され、「予期しないトークン」ではありません。
  • ほぼJSONを修復し、加えた変更をすべて列挙する修復モード。判断を伴う変更と安全な変更を分けて示します。
  • 反復型のパーサー。ネストの深さを縛るのはコールスタックではなくメモリです。

ここでのプライバシーは技術上の決定であり、マーケティングではない

2025年11月、オンラインのJSON整形ツールの大手2つが、保存された貼り付け8万件超、5年で蓄積されたおよそ5GBを流出させました。露出したデータには、行政・医療・航空宇宙の組織に属するActive Directoryの資格情報、クラウドのアクセスキー、個人アクセストークン、銀行取引記録が含まれていました。

教訓になるのは流出そのものではありません。そのうちの1つのサイトがトップページで「あなたのデータはブラウザ内で検証されます」と告げていながら、ファイルアップロードのボタンはあなたのファイルをサーバーへ送っていた、という点です。2つの記述はそれぞれ別の機能について真であり、ページを読む人にはどちらがどちらか区別できませんでした。

ですからこのサイトは、あなたに一文を信じてくれとは頼みません。すべてのページは、宛先をひとつだけ挙げたconnect-srcの許可リスト付きで配信されます。その宛先は、ページビューを数える解析用のエンドポイントです。アップロード用のエンドポイントも、URLから読み込む機能も、保存リンクも、アカウントも、広告もありません。そのどれもが、あなたのペイロードを運べるほど広い例外を必要とするからです。すべてを自分で検証する方法はこちら

どう作られているか

  • Astroで構築した静的ページ。サーバーサイドレンダリングもAPIもありません。
  • パーサー、整形器、修復エンジン、CSVライター、XMLパーサー、差分、JSONPathエンジンはすべてこのサイトのために書かれ、ビルドごとに走るテストスイートで覆われています。
  • エディタにはCodeMirror 6を採用し、単体で機能する素のtextareaの背後で遅延読み込みします。Monacoならおよそ5MBでした。
  • js-yamlが唯一の実行時サードパーティ依存で、2つのYAMLページでのみ読み込みます。YAML 1.2は、部分的な実装が文書を受け入れて黙って誤った値を返すには十分な大きさがあり、それこそこのサイトが避けるために存在する失敗の形です。
  • パースと整形はすべてWeb Workerで実行するので、10MBの文書でもタブは固まりません。
  • フォントは自前でホストしサブセット化しています。CDNからは何も取得しません。

訂正

このサイトの主張は「正しさに慎重である」ことなので、ここでの誤りはよそでの誤りより重く響きます。当サイトに引用したエラーメッセージはすべて、記憶からではなく実際にパーサーを走らせて得たものです。V8の文字列はNode v24.15.0から、Pythonの文字列はCPython 3.14.3から取得しました。FirefoxとSafariの文字列は、実行して検証できなかったため意図的に載せていません。

誤りを見つけたらお知らせください。修正のうえ変更履歴に記録します。

誰が保守しているか

この節は、もっともらしい名前で埋めるのではなく、意図的に空白にしてあります。このサイトのための調査で、記事のマークアップが「Roronoa Zoro」、肩書き「Infrastructure Engineer」という著者を掲げている競合を見つけました。漫画作品の架空の人物です。信頼のシグナルを満たすために人物を捏造するのは、シグナルが何もないことより悪い。ですから、ここに置ける真実が生まれるまでは何も置きません。