JSON フォーマッター&バリデーター
解析 / 整形 / 圧縮 / 検証 / エスケープ / アンエスケープ
JSONフォーマッターとは?
JSONフォーマッターは、1行に圧縮されたJSONにインデントと改行を加え、読みやすく編集しやすくします。APIの長大なレスポンス、設定ファイルのコンパクトなデータ、ログに混じるJSONの断片など、フォーマットすると構造と各フィールドが一目で分かるようになります。フォーマット後は、JSON圧縮ツールで空白を削除できます。また、HTTPテストツールと組み合わせてリクエストを送信したり、タイムスタンプ変換ツールでフィールド内のUnix時間を確認したりできます。Pythonのjson.dumps(indent=2)やJavaScriptのJSON.stringify(obj, null, 2)でもローカルで整形できますが、本ツールは環境構築不要でそのまま使えます。
主な用途
APIデバッグ:バックエンドが返すJSONレスポンスは1行に圧縮されていることが多く、本ツールに貼り付けてフォーマットすれば構造と値が明確になります。さらにHTTPテストツールを使えば問題を素早く追跡できます。設定ファイルの編集:package.jsonやtsconfig.jsonなどの設定ファイルは、編集前にフォーマットしてカンマ抜けや括弧の不一致を防ぎます。ログ解析:ログに出力されたJSONの断片をフォーマットすれば、異常なフィールドやエラーメッセージを素早く見つけられます。データ移行:NoSQLからエクスポートしたJSONデータを、ここでフィールドの完全性を検証してから、JSON圧縮ツールで圧縮し、ターゲットシステムへインポートできます。
ツールの使い方
左の入力ボックスにJSONテキストを貼り付け、2スペースまたは4スペースのインデントを選んでフォーマットボタンをクリックすると整形されます。圧縮ボタンをクリックすると、すべての空白と改行を削除してコンパクトなJSONを生成します。ツリー表示に切り替えれば、展開/折りたたみで階層構造を閲覧でき、結果はワンクリックでクリップボードにコピーしたり、.jsonファイルとしてダウンロードしたりできます。入力が正しいJSONでなければ、フォーマット時にエラーの箇所が具体的に表示され、すぐに修正できます。
変換のヒントとテクニック
JSONをTypeScript / Java / Goのコードに変換するには?
API連携では、レスポンスのJSONを型定義に直接マッピングすると各フィールドを手書きする手間が省けます。手順として、まず本ツールでJSONをフォーマットして正当性を確認し(誤った構造を型定義に持ち込まないため)、その上でフィールドをマッピングします。TypeScriptでは文字列をstring、数値をnumber、真偽値をboolean、ネストしたオブジェクトをinterface、配列は要素の型にします。JavaはPOJOのフィールドに、Goはstructのフィールドに対応し、先頭を大文字にしてエクスポートすることに注意します。よくある2つの落とし穴:16桁を超える整数はTSの安全整数範囲を超えるため、型はstringかbigintにします。また、APIで省略されうるフィールドはオプション属性(?)で受けます。
JSONとXML / YAML / CSVの相互変換は?
4者は表現力が異なるため、変換前に構造の互換性を確認してください。
- JSON → XML:キーと値のペアをタグに、配列を繰り返しタグにマッピングし、XMLの
<&>は実体参照でエスケープします。 - JSON → YAML:YAML 1.2はJSONのスーパーセットなので、多くのパーサーはJSONを直接読めます。逆変換ではYAMLがインデントに敏感である点に注意してください。
- JSON → CSV:「オブジェクトの配列」という平坦な構造にのみ適しており、キーがヘッダーになります。ネスト構造は先に平坦化(たとえば
{"a":{"b":1}}をa.b列に)する必要があります。 - 変換前後の検証:変換前に本ツールでJSONの正当性を確認し、変換後もターゲット形式を検証して、エスケープや精度が中間で失われるのを防ぎます。
JSONのキーを名前順に並べるには?
キーを統一すると、APIドキュメントの例が整い、複数回のリクエスト間の構造diffも見やすくなります。JSなら再帰的な1行で書けます:const sortKeys = o => Array.isArray(o) ? o.map(sortKeys) : Object.fromEntries(Object.keys(o).sort().map(k => [k, sortKeys(o[k])]))。ただし、JSON標準(RFC 8259)はキー順を保証しません。JSやPython 3.7+のパーサーが挿入順を保持するのは実装上の挙動にすぎず、並べ替えは可読性と比較のためだけに使い、ビジネスロジックでキー順に依存すべきではありません。
フォーマット後、長い数値の末尾が0になるのはなぜ?
多くのオンライン整形ツール(本ツールのツリー表示も含む)はJSON.parseに基づいており、これは数値をIEEE 754倍精度浮動小数点で解析します。安全整数の上限は253-1(16桁、9007199254740991)です。17桁以上の長い数値——注文番号、Snowflake ID、SNSのユーザー/動画ID——は、フォーマット後に末尾が静かに0に変わり、エラーも出ず最も発見しにくいです。確認:{"id":12345678901234567890}を貼り付けてフォーマットすれば再現します。回避策:転送層で長い数値を文字列としてシリアライズ(Javaの文字列シリアライズ注解や、JSのjson-bigintライブラリなど)するか、原文を保持する損失なしの解析ツールを選びます。長いIDを文字列で渡すのは業界の一般的な做法です。
よくあるJSONの構文エラー早見表
貼り付けてフォーマットするとエラーになる場合、たいてい次のような罠に当たっています。本ツールはエラーの行と列を正確に特定するので、それに沿って修正してください。
- キー名に二重引用符がない:
{name: "x"}は{"name": "x"}と書く必要があります。標準JSONのキーは二重引用符の文字列でなければなりません。 - 単一引用符を使っている:文字列は二重引用符のみ。
'hello'は"hello"に変更します。 - 末尾の余分なカンマ:最後の要素の後にカンマを置くことはできません。たとえば
[1, 2,]はエラーになります。 - コメントを書いている:標準JSONは
//や/* */のコメントをサポートしません。本ツールはコメントを先に除去してからフォーマットできます。 - 真偽値/nullの大文字小文字:小文字の
true、false、nullのみ有効です。
JSON内の中文が\uXXXXと表示される場合の対処法
貼り付けたJSONの中で、中文が\uXXXXという並び(たとえば\u7b80\u7f8eは実際には「简美」)になることがあります。これは文字化けではなく、Unicodeエスケープシーケンス——\uに4桁の16進数を続けて1文字を表す表記——です。よくある原因は、APIが返す際にASCIIエスケープを強制したり、一部の言語で文字列化した結果得られたりすることです。
元に戻す方法:このテキストを本ツールに貼り付けて「フォーマット」をクリックすると、標準のJSON.parseに従って\uXXXXが自動的に通常の中文として表示されます。逆の操作(中文を\uエスケープに変換して古いシステムと互換させる)が必要な場合も、本ツールはエスケープ処理に対応しています。例:
{"name":"\u7b80\u7f8e\u5de5\u5177"}→ フォーマット後は{"name":"简美工具"}と表示される\u文字がずらりと並んでいるだけの場合は、多くの場合全体が文字列として2重にエスケープされています。層ごとにフォーマットすれば元に戻ります。- 中文の「文字化け」を調べるときは、Unicodeエスケープ(\uXXXX)か、本当のエンコードエラー(UTF-8をGBKとして解釈するなど)かを見極めてください。両者は見た目が似ていますが原因が異なります。
現代のブラウザや多くの言語(JSのJSON.stringifyなど)は、デフォルトで中文をそのまま保持し、強制的にエスケープしません。転送の双方がASCII安全を求める場合のみ\u列に変換します。本ツールはフォーマット後に原文の中文と\uエスケープの両方の形を表示でき、異なるインターフェース規約への対応に便利です。
JSONフォーマッターのよくある質問
フォーマットするとデータは変わりますか?
いいえ、変わりません。JSONフォーマットはインデント、改行、空白の調整のみを行い、キー名、キー値、データ構造を一切変更しません。フォーマット前後でデータの意味は完全に一致します。
JSONフォーマッターは安全ですか?データが漏洩しませんか?
安全です。すべてのフォーマット、圧縮、検証処理はブラウザ上でローカルに完結し、データがサーバーにアップロードされることはありません。
JSONのフォーマットと圧縮の違いは?
フォーマットはインデントと改行を加えてJSONを読みやすくします。圧縮はすべての空白と改行を取り除き、JSONを1行にして転送しやすくサイズを小さくします。本ツールは両方の操作に対応しており、インデントを切り替えるか圧縮ボタンをクリックするだけです。
JSON検証ではどんなエラーを教えてくれますか?
よくあるエラーは、括弧や引用符の不一致、カンマの欠落や余分、キー名が引用符で囲まれていない、コメント(JSON標準はコメントをサポートしません)、末尾の余分なカンマです。本ツールはエラーの行と列を正確に特定し、迅速な修正を支援します。
ツリー表示とテキスト表示の違いは?
ツリー表示はJSONの階層構造を折りたたみ可能なノードで表示し、複雑なネストデータの素早い閲覧に向いています。テキスト表示はフォーマット済みのプレーンテキストを表示し、コピー&ペーストや行ごとの比較に向いています。両方の表示はいつでも切り替えられ、ツリー表示はワンクリックで全ノードの折りたたみ/展開に対応します。
JSONとXMLのフォーマットの違いは?
JSONは中括弧 {} でキーと値のペアを表し、XMLはタグのネストで階層を表します。JSONはXMLよりコンパクトで転送効率が高く、現在のWeb APIの標準データ形式です。本ツールはJSONのフォーマットと検証に特化し、コメント除去やエスケープ処理にも対応し、XML送信の代わりに1行のコンパクト形式へワンクリックで圧縮することもできます。
巨大なJSONファイルが重くなる場合は?
JSONファイルが1MBを超える場合は、まず余分な空白やコメントが含まれていないか確認してください。500KB未満のJSONはブラウザで通常瞬時にフォーマットされます。本ツールは先に圧縮してからフォーマットすることで処理速度を改善できます。超大規模なJSON(データベースのエクスポートなど)を扱う場合は、分割して入力するか、コマンドラインツールのjqで前処理してください。
JSONの配列とオブジェクトの違いは?どうやって素早くフォーマットする?
JSONオブジェクトは中括弧 {} でキーと値のペアを表し、キーは二重引用符の文字列でなければなりません。JSON配列は角括弧 [] で順序付きの値リストを表し、値には文字列、数値、真偽値、オブジェクト、配列をとれます。本ツールはオブジェクトと配列の両方のフォーマットとツリー展開に対応し、ネスト階層を層ごとに折りたたんで確認でき、配列の各要素も見やすく改行されるため構造の照合に便利です。
JSON内の中文が\uXXXXの文字化けになったときの復元方法は?
それはUnicodeエスケープシーケンスで、たとえば"\u7b80\u7f8e"は実際には「简美」です。文字化けではなく、\uに4桁の16進数を続けて漢字を表す表記です。本ツールのフォーマット時、標準のJSON.parseに従って解析され、\uXXXXが対応する中文として正常に表示されます。逆に中文を\uXXXXへ再エスケープすることも可能です。\u文字がずらりと並んでいるだけの場合は、貼り付けて「フォーマット」を押すだけで直ちに中文が表示されます。
JSONフォーマット後に中文が文字化けしますか?エスケープは必要ですか?
文字化けしませんし、手動でエスケープする必要もありません。現代のブラウザや多くの言語(JSのJSON.stringifyなど)はデフォルトで中文をそのまま保持し、\uXXXXへの強制変換はしません。転送の双方がASCII安全を明示的に求める場合のみ、中文を\u列にエスケープします。本ツールはフォーマット後に原文の中文と\uエスケープの両方の形を確認できるため、異なるインターフェース規約への対応に便利です。
数万行の大きなJSONから特定のフィールドを素早く見つけるには?
2つの方法を組み合わせます。まず本ツールのツリー表示で層を折りたたんで範囲を絞るか、テキスト表示でCtrl+Fを使ってフィールド名を直接検索します。階層の位置が決まったら、パスをつなげてJSONPath式(たとえば$.store.book[0].title)を作り、コードやブラウザのコンソールでJSONPathライブラリを使って値を正確に取り出せます。特定前にフォーマットしておくことをお勧めします。コンパクトな1行JSONでは目でフィールドを見つけるのはほぼ不可能だからです。
JSONを直接ExcelやSQLに変換できますか?
「オブジェクトの配列」構造のJSONはCSV/Excelに適しています(キーがヘッダー、各行が1オブジェクト)。SQLへの変換は通常、JSONからCREATE TABLE文やINSERT文を導出することを指し、ネスト構造は先に平坦化が必要です。いずれの変換でも、まず本ツールでフォーマットして正当性を確認し、フィールド型を確定してから操作することをお勧めします。これにより、汚れたデータが表やデータベースに入るのを防げます。