本文へスキップ

JSONフォーマッター&バリデーター

JSONを貼り付けて、2、4、8スペースで整形したり、1行に圧縮したり、解析できるかだけを確認したりできます。有効なJSONは色分けされ、整形前後のサイズが表示されます。無効なJSONは、ブラウザ自身のエラーメッセージとともに返されます。無料、登録不要で、貼り付けた内容がブラウザの外へ送られることはありません。

0行 · 0バイト

JSONフォーマッターの使い方

  1. 1. JSONを貼り付ける。 単一の値から大きなAPIレスポンスまで何でも構いません。入力ボックスは、入力に合わせて行数とバイト数を数えます。
  2. 2. インデントを選ぶ。 2、4、8スペースから選んでください。この設定は「整形」にだけ影響します。
  3. 3. 操作を選ぶ。 「整形」は読みやすくインデントと改行を入れ、「圧縮」は省略可能な空白と改行をすべて取り除き、「検証のみ」は構文だけをチェックして、出力を作らずに緑または赤の判定を示します。
  4. 4. 結果を読む。 有効なJSONは色分けして表示されます(キーは紫、文字列は緑、数値は青、trueとfalseはオレンジ、nullは赤)。入力サイズ、出力サイズ、変化率も表示されます。無効なJSONの場合は、代わりに解析エラーのメッセージが表示されます。「出力をコピー」で、表示されている内容をコピーします。

有効なJSONとは

このツールは、テキストを厳密なJSON解析器に渡します。その解析器は、形式の標準であるRFC 8259(ECMA-404と同じ文法)が認めるものだけを受け付け、それ以外は受け付けません。そのため、スクリプトでは動くコードが、ここでは失敗することがあります。よくある原因は次のとおりです:

JSONの解析に失敗する一般的な原因
間違い例修正方法
末尾のカンマ{"a": 1,}最後のカンマを削除する。
シングルクォート{'a': 1}すべてのキーと文字列に二重引用符を使う。
引用符のないキー{a: 1}引用符で囲む:{"a": 1}。
コメント// note または /* note */JSONにコメントはないので、削除する。
先頭の0または正符号007、+57と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スペースから選べます。キーは入力に与えられた順序のまま保たれますが、前述のとおり、整数のようなキーだけは先頭に移動します。

関連ツール

データ・マークアップ・コードのその他のツール