JSON整形ツール
貼り付けるだけで見やすく整形、または1行に圧縮。JSONはこのページの外に出ません。
出力
上に貼り付けるか入力すると、ここに結果が表示されます。
ファイルは端末の外に出ません
このツールはすべてブラウザ内で動作します。貼り付けた内容は端末内で処理され、サーバーには送信されないため、トークンや鍵、未公開の文章でも安心して使えます。
使用例
例:末尾のカンマで止まった店舗情報のJSONを直して、整形・圧縮する
Webサイトの店舗情報をJSONで管理していて、1行に詰まった次のデータを貼り付けた場面です。{"店舗名":"みなみ町店","郵便番号":"000-0000","営業時間":{"平日":"9:00-20:00","土日":"10:00-18:00",},"定休日":["水"]}
- 「JSONを整形」を押すと、エラーとして「Line 1, column 79」と、その位置を指す ^ が表示されます。79文字目は「土日」の値のあとのカンマに続く } で、JSONでは最後の項目のあとにカンマを置けません。
- カンマを消して押し直すと、スペース2つのインデントで11行に整形されます。表は設定ごとの文字数とバイト数です。
- バイト数が文字数より多いのは、日本語1文字がUTF-8で3バイトになるためです。容量の制限はバイト数で確かめます。
- 「キーをアルファベット順に並べ替える」をオンにすると、営業時間・定休日・店舗名・郵便番号の順になります。五十音順ではなく文字コード(Unicode)の順です。
| 設定 | 文字数 | バイト数 |
|---|---|---|
| 整形・スペース2つ | 131 | 179 |
| 整形・スペース4つ | 155 | 203 |
| 整形・タブ | 119 | 167 |
| 圧縮(1行) | 91 | 139 |
整形した結果をそのままコピーして使えます。整形でも圧縮でもデータの意味は同じで、貼り付けたJSONはどこにも送信されません。
使い方
- 入力欄にJSONを貼り付けます。APIのレスポンス、設定ファイル、ログの1行など、JSONであるべきテキストなら何でも構いません。
- 「整形」で読みやすいインデント付きに、「圧縮」で空白をすべて取り除いた1行に変換できます。インデントはプロジェクトの規約に合わせてスペース2つ・4つ・タブから選びます。
- オブジェクトのキーをアルファベット順にそろえたい場合は「キーをアルファベット順に並べ替える」をオンにします。差分の確認やコードレビューがぐっと楽になります。
- 入力するそばから結果が表示されます。構文エラーがある場合は、問題のある行と列がメッセージに表示されるので、その場で修正できます。
よくある質問
- 貼り付けたJSONはサーバーに送信されますか?
- いいえ。解析と整形はブラウザに組み込まれたJSONエンジンを使ってお使いの端末内で実行されます。トークンや顧客情報、社内の設定値を含むAPIレスポンスを貼り付けても、ページの外には一切出ません。
- どのような点をチェックしていますか?
- RFC 8259で定義された厳密なJSON構文を検証します。キーは二重引用符で囲む、末尾のカンマは禁止、コメント不可、シングルクォート不可、引用符なしのキーは不可、といったルールです。JavaScriptのオブジェクトリテラルやJSON5を貼り付けると、最初に違反した文字の位置でエラーになります。
- キーを並べ替えるとデータの意味は変わりますか?
- オブジェクトについては変わりません。JSONのオブジェクトは定義上順序を持たないため、受け取る側がキーの順序に依存してはいけないことになっています。配列は順序に意味があるため、並べ替えの対象外です。並べ替えはネストしたすべてのオブジェクトに再帰的に適用されます。
- 大きな数値やUnicode文字列が整形後に変わって見えるのはなぜですか?
- JSONの数値はJavaScriptの倍精度浮動小数点として解釈されるため、2の53乗(約9,007兆)を超える整数は精度が落ち、非常に長い小数は丸められます。\u00e9のようなエスケープされたUnicodeは実際の文字として表示されます。桁数の大きいIDなどを正確に扱いたい場合は、文字列として保持してください。
- 整形と圧縮の違いは何ですか?
- 整形は改行とインデントを加えて人が構造を読めるようにします。圧縮は省略可能な空白をすべて取り除き、URLや環境変数、通信ペイロードに埋め込むのに適した最小のJSONを作ります。どちらもデータとしての意味は完全に同じです。
- 日本語のキーは五十音順に並びますか?
- いいえ。キーの並べ替えは文字コード(Unicode)の順で、読みは見ていません。「店舗名」「営業時間」「定休日」「郵便番号」なら、営業時間・定休日・店舗名・郵便番号の順です。英字のキーはA〜Zの順で、大文字が小文字より先に来ます。
- バイト数と文字数が違うのはなぜですか?
- バイト数はUTF-8で保存したときの大きさです。英数字と記号は1文字1バイトですが、ひらがなや漢字は1文字3バイトなので、日本語が入るとバイト数のほうが大きくなります。