JSON整形・検証の使い方|エラー箇所の読み方と数値が壊れる落とし穴

JSONが読み込めない原因はだいたい決まっています。エラー位置の読み方、直し方の順序、そして「整形しただけなのに値が変わる」ケースの見分け方をまとめました。

🧩 JSON整形・検証を開くJSONの整形(インデント付与)・圧縮・構文エラー箇所の特定を行います。値が変わる箇所も警告します。

エラーになるJSONは、原因がほぼ7つに絞れる

JSONは仕様が小さいぶん、書式の逸脱に厳しい形式です。パーサーが投げるエラーは位置情報を伴いますが、実際の原因はその少し手前にあることが多く、指摘された行だけを眺めても直りません。次の7つを上から順に潰すのが最短です。

  • 末尾のカンマ。配列やオブジェクトの最後の要素の後ろにカンマが残っている。
  • シングルクォート。JSONの文字列は二重引用符のみで、'value' は不正。
  • 引用符のないキー。{ name: "a" } ではなく { "name": "a" } が正しい。
  • コメント。// や /* */ はJSONには存在しない。
  • NaN・Infinity・undefined。JSONの数値として認められていない。
  • 全角の引用符や全角スペース。資料からコピーしたときに紛れ込みやすい。
  • 先頭のBOM。ファイルから読み込んだときだけ失敗する典型例。

本ツールはエラーを検出した位置を示します。指摘された箇所に問題が見当たらないときは、その直前の要素の終端を確認してください。閉じ括弧や引用符の不足は、実際の記述位置よりも後ろでエラーとして現れます。

整形しても値が変わらない、とは限らない

多くの環境でJSONの数値は倍精度浮動小数点数として扱われます。この形式が誤差なく表せる整数は概ね9,007,199,254,740,991(2の53乗マイナス1)までで、これを超える整数は読み込んだ時点で近い値に丸められます。SNSの投稿ID、決済システムの取引ID、Snowflake形式の識別子などは平気でこの桁を超えるため、整形して貼り直すと末尾の数桁が変わってしまうことがあります。

同じ理由で、小数にも誤差が出ます。0.1と0.2を足すと0.30000000000000004になる、あの現象です。金額を小数で持っているJSONを整形して戻すと、末尾に余計な桁が現れることがあります。

本ツールは、整形の前後で値の表現が変化した箇所を検出して警告します。警告が出たフィールドは、整形後のテキストをそのまま本番データとして使わないでください。対処としては、そのIDや金額を文字列として持つ("id": "9007199254740993")のが確実です。

整形と圧縮の使い分け

整形(インデントを付ける)は、人が読む場面と差分を取る場面のためのものです。1行に詰まったJSONをそのままバージョン管理に入れると、1文字の変更でも差分が1行全体になり、レビューが成立しません。設定ファイルやテストデータのように人がレビューするJSONは、整形した状態で保存します。

圧縮(空白と改行を削る)は、送受信と保存のためのものです。APIのレスポンスや、HTMLに埋め込む構造化データのように機械しか読まないJSONは、圧縮しておくと転送量が減ります。整形と圧縮のどちらを選ぶかは、そのJSONを最後に読むのが人か機械かで決めてください。

APIのレスポンスを貼るときに気をつけること

デバッグ中のレスポンスには、アクセストークン、メールアドレス、氏名、内部のエンドポイントなどが含まれていることがあります。本ツールの処理はすべてブラウザ内で完結し、入力内容が当サイトのサーバーへ送られることはありませんが、画面共有中や共用端末での作業では、貼り付けた内容そのものが目に触れます。共有する前に該当箇所を伏せ字に置き換えてください。

また、レスポンスをコピーしたつもりでヘッダー行やHTTPステータス行まで含めてしまうと、当然ながら構文エラーになります。波括弧または角括弧で始まる位置から選択し直してください。

JSONによく似た別物と混同しない

JSON Lines(.jsonl)は、1行に1つのJSONオブジェクトを並べた形式です。ファイル全体としてはJSONではないため、そのまま貼り付けると2行目でエラーになります。1行ずつ取り出して確認してください。

JSON5やJSONCは、コメントや末尾カンマを許した拡張仕様です。設定ファイルではよく使われますが、標準のJSONパーサーは受け付けません。本ツールも標準のJSONとして検証するため、これらの記法はエラーとして報告されます。

よくある質問

エラー位置が示されたのに、そこには何も問題がありません。

閉じ括弧や引用符の不足は、実際に書き忘れた位置ではなく、その後ろで初めて矛盾として検出されます。指摘された位置から上へさかのぼり、直前のオブジェクト・配列・文字列が正しく閉じているかを確認してください。

整形したら数値の末尾が変わってしまいました。

9,007,199,254,740,991を超える整数は、倍精度浮動小数点数で正確に表せないため丸められます。IDのように桁の大きい値は、JSON上で文字列として持つ設計に変更するのが確実です。本ツールはこの変化を警告として表示します。

コメント付きのJSONを整形できますか?

できません。コメントは標準のJSON仕様に存在しないため、構文エラーとして扱われます。JSON5やJSONCとして書かれた設定ファイルは、コメントを取り除いてから貼り付けてください。

日本語が \u3042 のように表示されます。

元のデータがUnicodeエスケープで書かれている場合、その表記のまま扱われます。JSONとしてはどちらも同じ文字列を意味するため、値そのものは変わっていません。

貼り付けたJSONはサーバーに送信されますか?

送信されません。整形・圧縮・検証はすべてブラウザ内で実行されます。ページを閉じると入力内容は残りません。

🧩 JSON整形・検証を使ってみる登録不要・無料です。入力内容はブラウザ内で処理され、当サイトのサーバーへ送信されません。
この記事を共有

← 使い方ガイドの一覧へ戻る