コンテンツへスキップ

JSON整形・検証

ブラウザ内処理ファイルはアップロードされませんこの処理はブラウザ内で完結します。ファイルはどこにも送信されません。

貼り付けるだけで整形・最小化・キーのソートができます。読み取れなかったときは何行目の何文字目かを示し、その行を抜き出してキャレットで指します。末尾カンマやコメントなど「JSONでは使えない書き方」も名前を出して指摘します。

入力

JSONを貼り付け

出力

ここに整形結果が出ます。
貼り付けたもの{"n":1,"a":[1,2,],}指摘1行目 15桁目末尾のカンマはJSONでは使えません正しいJSONなら、整形・最小化・キーのソートがその場でできます。
読み取れなかったときは、行と桁を出したうえでその行を抜き出し、キャレットで位置を指す。末尾カンマのように「JSONでは使えない書き方」は名前を出して指摘する。
ツール一覧

特長

エラー位置を行と桁で表示
JSONが読み取れなかったとき、構文を解析して行番号と文字位置を割り出し、該当行を抜き出してキャレットで示します。最小化された1行のJSONでも、エラーの付近だけを切り出して表示します。
よくある原因を具体的に指摘
末尾カンマ、シングルクォート、引用符のないキー、コメント、全角スペースや全角引用符など、JSONでは使えない書き方が見つかった場合は、その内容を名前つきで表示します。
データは送信されない
整形も検証もブラウザ内で完結し、貼り付けた内容はどこにも送信されません。アクセストークンや個人情報を含むAPIレスポンスにもそのまま使えます。

使い方

  1. JSONを貼り付ける

    入力欄に貼り付けます。左側に行番号が出るので、エラーの行がそのまま探せます。試すだけなら「例を入れる(わざと壊したJSON)」を押すと、よくある壊れ方の例が入ります。

  2. 動作を選ぶ

    整形・最小化・キーをソートの3つから選びます。整形するときは、インデントをスペース2・スペース4・タブから選べます。結果は貼り付けた時点で出ます。

  3. 結果を受け取る

    読み取れれば「OK」と出て、結果はコピーとダウンロードで持ち出せます。読み取れなければ何行目の何文字目かを示し、その行を抜き出してキャレットで指します。

JSONの仕様について

なぜ末尾カンマやコメントが使えないの?
JSONはJavaScriptの記法から生まれましたが、仕様は別(RFC 8259)で、JavaScript側が後から許した書き方は取り込まれていません。末尾カンマはES5でJavaScriptに入りましたがJSONには無く、コメントは最初から仕様にありません。設定ファイルで使いたい場合は、JSONCやJSON5といった別フォーマットか、`"_comment"` のような普通のキーを置く方法が使われます。
数値が貼り付けたときと変わることがあります
変わります。`JSON.parse` は数値をすべて倍精度浮動小数点数に変換するため、`1.0` は `1` になり、`12345678901234567890` のような19桁を超える整数は末尾が丸められます。IDを文字列として返すAPIが多いのはこのためです。桁の大きなIDを扱うときは、整形前後で値が同じか確認してください。
同じキーが2つあるとどうなる?
後に書かれたほうだけが残ります。これは整形の仕様ではなく `JSON.parse` の挙動で、読み込んだ時点で先のほうは失われています。「キーをソート」で消えたように見える場合も、実際はソートより前の段階で消えています。
JSON Lines(JSONL)とは
1行に1つのJSONを書き、それを改行で並べた形式です。ログや大きなデータセットで広く使われていて、末尾に1行足すだけで追記でき、全体を読み込まなくても1行ずつ処理できるのが利点です。ファイル全体としてはJSONではないので、普通のJSONパーサに渡すと必ずエラーになります。ここでは各行が独立したJSONに見えたら自動で切り替えます。

よくある質問

貼り付けたJSONはどこかに送信されますか?
されません。整形も検証もブラウザの中だけで行われ、貼り付けた内容がサーバーへ送られることはありません。ページを閉じれば内容は消えます。
どれくらいの大きさまで扱えますか?
明確な上限は設けていませんが、端末のメモリ次第です。数MBまでは実用的に動きます。約200KBを超えると入力中の自動整形を止めて「整形する」ボタンでの実行に切り替わります。毎回のキー入力で数MBを解析し直すと、入力そのものが引っかかるためです。
壊れたJSONを自動で直してくれますか?
直しません。末尾カンマを消すだけなら安全ですが、シングルクォートをダブルクォートに置き換える処理は、文字列の中のアポストロフィまで壊すことがあります。自動では書き換えず、場所と理由の表示にとどめています。
行番号はブラウザのエラーメッセージから取っているのですか?
いいえ。ブラウザ任せにすると多くの場合これが出せません。Chromeは実用的な長さのJSONだと位置の代わりに前後の抜粋を返し、Safariはそもそも位置を含みません。そこで、このページは構文を自分で追って最初に破綻した位置を割り出し、そこから行と桁を数えています。理由の文言(「この , のあとに要素がありません」など)も同じ判定によるもので、ブラウザの原文は下に参考として並べています。整形そのものはブラウザ標準の処理を使っているため、表示される結果は通常のJSONの解釈と一致します。
キーをソートすると何が良いのですか?
同じ内容でもキーの順番が違うだけで差分が出る、という状況を避けられます。2つの設定ファイルを比較する前に両方をソートしておくと、本当に違う箇所だけが差分に残ります。並び順はUnicodeのコード順で、環境によって変わりません。
スポンサーリンク