JSONフォーマッター&バリデーター
JSONを貼り付けて、2、4、8スペースで整形したり、1行に圧縮したり、解析できるかだけを確認したりできます。有効なJSONは色分けされ、整形前後のサイズが表示されます。無効なJSONは、ブラウザ自身のエラーメッセージとともに返されます。無料、登録不要で、貼り付けた内容がブラウザの外へ送られることはありません。
0行 · 0バイト
JSONフォーマッターの使い方
- 1. JSONを貼り付ける。 単一の値から大きなAPIレスポンスまで何でも構いません。入力ボックスは、入力に合わせて行数とバイト数を数えます。
- 2. インデントを選ぶ。 2、4、8スペースから選んでください。この設定は「整形」にだけ影響します。
- 3. 操作を選ぶ。 「整形」は読みやすくインデントと改行を入れ、「圧縮」は省略可能な空白と改行をすべて取り除き、「検証のみ」は構文だけをチェックして、出力を作らずに緑または赤の判定を示します。
- 4. 結果を読む。 有効なJSONは色分けして表示されます(キーは紫、文字列は緑、数値は青、trueとfalseはオレンジ、nullは赤)。入力サイズ、出力サイズ、変化率も表示されます。無効なJSONの場合は、代わりに解析エラーのメッセージが表示されます。「出力をコピー」で、表示されている内容をコピーします。
有効なJSONとは
このツールは、テキストを厳密なJSON解析器に渡します。その解析器は、形式の標準であるRFC 8259(ECMA-404と同じ文法)が認めるものだけを受け付け、それ以外は受け付けません。そのため、スクリプトでは動くコードが、ここでは失敗することがあります。よくある原因は次のとおりです:
| 間違い | 例 | 修正方法 |
|---|---|---|
| 末尾のカンマ | {"a": 1,} | 最後のカンマを削除する。 |
| シングルクォート | {'a': 1} | すべてのキーと文字列に二重引用符を使う。 |
| 引用符のないキー | {a: 1} | 引用符で囲む:{"a": 1}。 |
| コメント | // note または /* note */ | JSONにコメントはないので、削除する。 |
| 先頭の0または正符号 | 007、+5 | 7と5と書く。 |
| NaN、Infinity、undefined | {"x": NaN} | JSONには存在しないので、nullか文字列を使う。 |
| 文字列内の生の改行 | 引用符の中の改行 | 2文字の\nと書く。 |
| カンマの欠落 | {"a": 1 "b": 2} | メンバーはカンマで区切る。 |
42、"text"、nullだけでも有効です。RFC 7159以降、JSONのテキストはオブジェクトや配列だけでなく、任意の値になれるためです。大文字のTrueやNULLは無効です。3つのリテラルはすべて小文字です。
整形によって変わる点
このツールはJSONを解析してから書き出し直すため、結果は同じデータを新しいレイアウトで表したものであり、入力テキストを1文字ずつ写したものではありません。4つの点が変わることがあります。最初の2つは、そのJSONを別のシステムで使う場合に重要です:
- 大きな整数は精度を失います。 JavaScriptの数値は64ビット浮動小数点数なので、9,007,199,254,740,991(253 − 1)を超える整数は丸められます。
9007199254740993は9007199254740992になります。IDがそれほど大きい場合は、文字列として保存してください。 - 重複するキーは1つにまとめられます。 RFC 8259では、名前は一意であるべき(should)とされていますが、繰り返しを禁じてはいません。このツールは最後の値を残し、それより前の値を捨てます。
- 整数のようなキーが先頭に移動します。 JavaScriptでは、
"1"や"2"のようなキーが、他のキーより前に昇順で並びます。そのため{"b":1,"2":1,"1":1}は{"1":1,"2":1,"b":1}として書き出されます。その他のキーは元の順序を保ちます。 - 数値とエスケープは書き換えられます。
1.50は1.5に、1e2は100に、\u00e9はéになります。
具体例
大きなID、末尾の0、指数、エスケープを含む、119バイトの入力を見てみましょう:
入力
{"title":"APA Manual","year":2020,"tags":["style","7th"],"id":9007199254740993,"price":1.50,"x":1e2,"name":"caf\u00e9"}
2スペースで整形すると156バイト(+31%)になり、1行に1メンバーずつ、"id": 9007199254740992、"price": 1.5、"x": 100、"name": "café"となります。圧縮すると114バイト(-4%)になり、1行にまとめられますが、変更点は同じです。データのほかの部分は変わりません。サイズはUTF-8のバイト数で数えるため、éは2バイトとして数えられます。
どのツールが必要ですか?
このページはJSONそのもののためのものです。データが別の形式の場合は、対応するツールを使ってください。スプレッドシートならCSV → JSON、計画中のYAMLからJSONへの変換ツールとXMLからJSONへの変換ツール、XML文書ならXMLフォーマッター、マークアップならHTMLフォーマッターを使います。
よくある質問
- JSONフォーマッターは何をしますか?
- JSONを解析して、一貫したインデントと1行1メンバーの形で書き出し直すので、圧縮されたAPIレスポンスも読みやすくなります。解析が必要なため、検証ツールとしても使えます。有効なJSONでないテキストは、出力の代わりにエラーになります。
- なぜJSONが無効と表示されるのですか?
- 多くの場合、上の表にある間違いのどれかが原因です。末尾のカンマ、シングルクォート、引用符のないキー、コメント、カンマの欠落などです。メッセージはブラウザ自身のJSON解析器が出すものなので、Chrome、Firefox、Safariで文言が異なり、位置が示されるかどうかも異なります。メッセージが示す位置、またはその直前を確認してください。
- コメント付きのJSON、JSON5、JSONCを整形できますか?
- いいえ。コメント、末尾のカンマ、シングルクォートはJSONの一部ではなく、このツールは厳密な解析器を使います。先にそれらを削除するか、エディターでプレーンなJSONに変換してください。
- 「整形」「圧縮」「検証のみ」の違いは何ですか?
- 「整形」はインデントと改行を加え、「圧縮」は省略可能な空白をすべて取り除いて最も小さいテキストにし、「検証のみ」は構文だけをチェックして、出力なしで判定を示します。3つとも同じ解析器を使うため、1つを通過した文書は、すべてを通過します。
- JSONの数値が変わったのはなぜですか?
- このツールは数値をJavaScriptの浮動小数点数として読み、JavaScriptの最短の形式で書き戻します。そのため
1.50は1.5に、1e2は100になり、253 − 1を超える整数は丸められます。正確に残す必要がある大きなIDは、文字列として保存してください。 - JSONはどこかにアップロードされますか?
- いいえ。解析、整形、ハイライトはすべてブラウザ内で行われ、貼り付けたテキストがCitationEasyやほかの誰かに送られることはありません。共有のコンピューターで作業を終えたら、ボックスを空にしてください。
- キーを並べ替えたり、インデントにタブを使ったりできますか?
- いいえ、ここではできません。インデントは2、4、8スペースから選べます。キーは入力に与えられた順序のまま保たれますが、前述のとおり、整数のようなキーだけは先頭に移動します。