本文へスキップ
totonoe.tech

開発ツールを整える

中級

JSONを整える

= 壊れたJSONの場所と原因を日本語で。整形・圧縮・修復もブラウザ内で

アニメで見る — コピペでJSONが壊れるしくみ 開くと1ステップずつ動きます
📱

チャット・Word

コピー元

📝 "name": "田中"
🔤

自動変換

スマート引用符化

🔤 " → " " に変換

壊れたJSON

構文エラー

❌ 12行3列: 予期しない文字
🔍

診断

行・列と原因を特定

🔍 スマート引用符(修復可)

直ったJSON

再検証まで自動

✅ 正しいJSONです

STEP 1

※ イメージ図です。下の入力欄に実際のJSONを貼ると、診断・修復まで試せます(送信ゼロ)。

① JSONを貼り付ける

貼り付けたそばから、構文チェックと診断を実行します。ファイルのドラッグ&ドロップにも対応。

JSON 入力するそばから診断(送信ゼロ)
0 文字

ファイルをドラッグ&ドロップしても読み込めます(.json・.txt など)。

② 診断結果

構文エラーの位置と原因、修復候補の一覧です。エラー位置はエンジンのメッセージに頼らず、このツールが自前で特定しています。

状態

JSONを貼り付けると診断結果が表示されます

指摘事項

0件
  • JSONを貼り付けると、ここに指摘事項が表示されます。

③ 整形・圧縮

正しいJSONと診断されると、整形・圧縮の結果が下に表示されます。数値は元の桁のまま、1文字も変わりません。

整形
— 文字
最小化(圧縮)
— 文字

空白・改行を取り除き、1行にまとめます。API送信用のペイロード確認などに。

なぜ「送信ゼロ」と言えるのか

このツールのJSON処理は、ページに同梱した処理プログラム(自前のJSONスキャナ・パーサ)がブラウザの中だけで行います。構文チェックも、指摘の検出も、修復も、整形・圧縮も、すべてこの端末のメモリ内で完結します。信じなくても確認できます——ブラウザの開発者ツールの「ネットワーク」タブを開いたままJSONを貼り付けてみてください。データを送る通信は発生しません。

場面 01

ChatGPTのJSONが読み込めない

生成AIが出したJSONをそのままシステムに貼ったら構文エラー。どこが悪いのか、行と列で一発表示します。

場面 02

チャットからコピーしたら壊れた

Slackやメール、Wordから貼ったJSONの引用符が勝手に丸まっていた——というよくある事故を、診断してから安全に修復します。

場面 03

大きなIDを含むログ・APIレスポンス

20桁前後のSnowflake IDやSNSの投稿IDが、整形しても1桁も変わらないことを確認できます。

解説

コピペでJSONが壊れる、いちばん多い原因。

JSONの仕様では、文字列を囲む引用符は半角の「"」だけが許されています。ところがWord・PowerPoint・多くのチャットアプリには「スマート引用符(タイポグラフィ引用符)」という自動変換機能があり、ふつうに打った "' を、見た目のきれいな丸い引用符(“ ” ‘ ’)に勝手に置き換えます。この変換された引用符はJSONの構文としては無効な文字で、貼り付けた瞬間にパースが壊れます。

同じように、日本語入力(IME)のクセで、半角スペースのつもりが全角スペース(U+3000)になっていることもあります。JSONの構文上の空白は半角だけが対象なので、文字列のにある全角スペースはエラーの原因になります(文字列のにある全角スペースは値の一部なので問題ありません。このツールもそこを区別して診断します)。

ChatGPTなどの生成AIが、会話の流れで気を利かせて // 補足コメント を混ぜたり、配列の最後に余分なカンマを残したりすることもあります(JavaScriptのオブジェクト記法の感覚に引っ張られるためと見られます)。どちらも標準のJSONでは無効です。

解説

大きな数値を1桁も変えない設計。

多くのJSON整形ツールは、内部で JSON.parse してから JSON.stringify で書き戻す実装になっています。JavaScriptの数値(Number型)はIEEE754倍精度浮動小数点数で、安全に扱える整数の範囲は最大16桁(253−1 = 9,007,199,254,740,991)までです。Snowflake ID・SNSの投稿ID・メッセージIDなど20桁前後のIDはこの範囲を超えるため、JSON.parse を通した時点で末尾の桁が丸められ、元とは違う数値になってしまいます。

例えば {"id": 12345678901234567890} を一般的な整形ツールに通すと、末尾が丸められて別の数値に変わってしまうことがあります。このツールは数値を一度もNumber型に変換せず、ソースの生の桁をそのまま構文木(AST)に保持して書き戻すため、何桁のIDでも整形・圧縮の前後で1文字も変わりません(小数の末尾ゼロ「1.10」や指数表記「1e3」も同様に、書いたままの表記を保ちます)。

このツールにできないこと

  • JSON5・JSONCの完全対応はしていません。コメント(// /* */)や末尾カンマなど「安全に取り除けるもの」だけを検出・修復します。裸のキー(引用符なし)の自動修復や、16進数リテラルなどJSON5固有の記法には対応していません(引用符の付け忘れは検出のみで、どこに付けるべきか自体は曖昧なため自動修正しません)。
  • スキーマ検証はしません。型が正しいか・必須の項目が揃っているかは見ません。あくまで「構文として正しいJSONかどうか」の診断に特化しています。
  • 数百MBクラスの巨大なJSONは、ブラウザのメモリや処理速度の都合で重くなる、または動作しないことがあります。

このツールについて

「ChatGPTが出したJSONが読み込めない」「チャットやWordからコピーしたら壊れた」——そんなJSONを貼り付けると、どの行・どの文字が原因かを日本語で示し、直せるところは「まとめて修復」でその場に直します。整形・圧縮も、20桁のIDのような大きな数値を1桁も変えずに処理します。入力はこの端末の中だけで処理され、外部には送信されません。

壊れたJSONは何行目の何が悪いかを日本語で表示。スマート引用符・全角スペース・末尾カンマなどコピペ起因の破損はワンクリック修復。整形・圧縮しても20桁のIDを丸めない設計。送信ゼロ。

主な機能

  • 構文エラーの行・列と原因を日本語で表示(自前パーサ)
  • スマート引用符・全角スペース・末尾カンマ・コメント・シングルクォートをワンクリック修復
  • 文字列の中身は修復で変更しない(安全な置換のみ)
  • 整形(インデント2/4/タブ)・圧縮・キーの並べ替え
  • 15桁を超えるIDや 1.10 のような数値表記を丸めない(raw保持)
  • ChatGPTの出力やコピペで壊れたJSONの復旧に・送信ゼロ

よくある質問

Q. JSONのエラーが「どこ」にあるか知りたいのですが、行と列は表示されますか?

A. はい。貼り付けると自前のパーサが構文をチェックし、「n行m列: 原因」の形で**日本語**表示します。ブラウザのJSONエンジンのエラーメッセージ(Unexpected token など)には頼らず、このツール自身が位置を特定しています。

Q. なぜコピペするとJSONが壊れるのですか?

A. 最も多い原因は、WordやChatGPTの回答画面などが持つ**スマート引用符の自動変換**です。ふつうに打った半角の " や ' が、見た目のきれいな “ ” ‘ ’ に置き換わり、JSONの構文として無効になります。全角スペースの混入や、生成AIが混ぜがちなコメント・末尾カンマも原因になります。このツールはこれらを診断し、まとめて修復できます。

Q. 大きい数値のID(20桁など)が変わってしまいませんか?

A. 変わりません。一般的な整形ツールは JSON.parse してから書き戻すため、**16桁を超えるID**(Snowflake IDなど)は末尾が丸められることがあります。このツールは数値を一度もNumber型に変換せず、元の桁をそのまま保持するので、20桁のIDでも整形・圧縮の前後で1文字も変わりません。

Q. 入力したJSONはどこかに送信されますか?

A. 送信されません。構文チェック・診断・修復・整形・圧縮はすべてこの端末(ブラウザ)内で処理され、外部通信は一切発生しません(送信ゼロ)。ブラウザの開発者ツールの「ネットワーク」タブを開いたまま試していただければ、通信が起きていないことを直接確認できます。

Q. コメント付きのJSON(JSON5・JSONC)も直せますか?

A. 一部対応しています。「//」や「/* */」のコメント、末尾カンマ、シングルクォートなど**安全に取り除けるもの**は検出・修復できますが、JSON5・JSONCの完全対応やスキーマ検証は行っていません。裸のキー(引用符なし)は検出のみで、どこに引用符を付けるべきかが曖昧なため自動修正はしません。

入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。

続けて整える

運営サイト

私たちが運営するサイト