JSONバリデーター&整形ツール

JSONコンテンツを検証し、美化するために、私たちのJSONバリデーターとビューティファイアーツールを使用して、クリーンで読みやすいJSONデータを作成しましょう。

2件中5件の評価
JSONバリデーター&整形ツール

JSONバリデーター&整形ツールは、JSONの構文が正しいかを検証し、有効なデータを読みやすい構造に整形できる無料ツールです。

JSONの検証と整形では何ができますか?

JSONの検証では、入力内容がJSONの文法に従っているかを確認します。整形では、有効なオブジェクトや配列に一貫した空白とインデントを付け、読みやすく表示します。APIレスポンスのデバッグ、デプロイ前の設定確認、第三者から提供された圧縮形式のデータの確認などに役立ちます。

JSONの構文は、JavaScriptのオブジェクトリテラルより厳密です。プロパティ名には二重引用符が必要で、文字列に一重引用符は使えません。オブジェクトや配列の末尾にカンマを付けることもできません。また、コメント、undefined、NaN、InfinityもJSONの仕様には含まれません。

このツールは、サーバー上でPHPのjson_decode関数を使用します。入力内容はHTTPS経由でサーバーへ送信されますが、保存されません。ただし、データは端末の外部へ送られます。組織のデータ取扱規則で外部サーバーへの送信が認められていない場合は、パスワード、アクセストークン、個人情報をあらかじめ削除してください。

JSONを検証して整形するには?

JSON欄に内容を貼り付け、ツールを実行してください。正しく検証するには、ログ行から切り取ったオブジェクトの一部ではなく、完全なJSON値を1つ入力します。

  1. コンソールに付加されたラベルを除き、未加工のレスポンス、設定ブロック、その他のJSON値をコピーします。
  2. 引用符とエスケープ文字を維持したまま、JSON欄に貼り付けます。
  3. 検証を実行し、整形された結果または表示されたエラーを確認します。
  4. 検証に失敗した場合は、最初に見つかった構文上の問題を修正して、もう一度実行します。引用符が1つ欠けただけでも、それ以降の複数の文字が誤って解釈されることがあります。
digily.link のJSONバリデーター&整形ツールツールと入力フォーム

JSONトークン間で使用できる空白文字は、スペース(U+0020)、タブ(U+0009)、改行(U+000A)、復帰(U+000D)の4つです。これらはデータに影響しないため、追加または削除しても内容は変わりません。一方、引用符で囲まれた文字列内の空白はデータの一部なので、変更しないでください。文字列内の句読記号もそのまま保持されますが、引用符、バックスラッシュ、制御文字には適切なエスケープシーケンスが必要です。

検証結果はどう確認すればよいですか?

検証に成功した場合は、PHPが入力内容をJSONとしてデコードできたことを意味します。失敗した場合は、パーサーが入力を完全で有効な1つのJSON値として解釈できなかったということです。整形すると、有効なオブジェクトや配列の入れ子構造と境界が分かりやすくなります。

検証に失敗する主な原因は次のとおりです。

  • }または]の直前に末尾のカンマがある。
  • {name: "Ada"}のように、プロパティ名が引用符で囲まれていない。
  • 文字列に一重引用符を使っている。
  • プロパティ間または配列要素間のカンマが抜けている。
  • 文字列内の二重引用符またはバックスラッシュがエスケープされていない。
  • オブジェクト、配列、文字列が途中で切れている。
  • 入力が無効なUTF-8であるか、文字列内に未処理の制御文字が含まれている。
  • 01や-01のように整数部に不要な先頭のゼロがある、またはNaNのようなJSONではない値が含まれている。

空の入力欄は有効なJSONではありません。一方、42、true、null、"hello"のような単独の値は、オブジェクトや配列でなくても有効なJSONです。また、入れ子が非常に深いデータは、デコーダーのネスト上限を超える場合があります。

構文検証だけでは、データがAPIの仕様に適合しているかまでは確認できません。JSONとして有効でも、アプリケーションが数値を求める箇所に文字列が入っている、必須プロパティがない、日付形式が要件を満たしていない、といった問題は起こり得ます。こうした要件は、JSON Schemaまたはアプリケーション側のチェックで確認してください。

JSONバリデーター&整形ツールツールが生成した結果の例

JSONの実例

有効な圧縮形式の入力:

{"name":"Ada","active":true,"roles":["admin","editor"]}

整形後は、プロパティと配列要素がそれぞれ別の行とインデント階層で表示されます。各値の型は、それぞれ文字列、真偽値、配列のままです。整形によって変わるのは表示方法だけで、元のデータ型は変わりません。

末尾にカンマがある無効な入力:

{"name":"Ada","active":true,}

JSONでは最後のプロパティの後にカンマを置けないため、検証に失敗します。このカンマを削除すれば、有効なオブジェクトになります。

入力が有効なUTF-8であれば、アクセント付き文字やラテン文字以外のテキストもJSON文字列に直接含められます。たとえば、{"city":"Zürich","greeting":"こんにちは"}は有効です。\u00fcのようなJSONエスケープ表記も、一部のUnicode文字を表す有効な方法です。ただし、基本多言語面の範囲外にある文字にはサロゲートペアが必要です。

JSONを整形してもあまり意味がないのはどんな場合ですか?

JSONを機械だけが読み、人による確認やバージョン管理上のレビューを行わない場合、整形は不要です。JSONにインデントや改行を追加すると転送するバイト数が増えるため、本番環境のレスポンスは一般に圧縮形式で送信されます。

すでに圧縮されているJSONをさらに圧縮しても、ほとんど効果はありません。圧縮を繰り返しても、固定されたプロパティ名や文字列値を短くすることはできず、それらの値を変えればデータ自体が変わってしまいます。JSONデータではなく、デプロイ用のJavaScriptを処理する場合は、JSミニファイアーの方が適しています。

JSONの整形は、デバッグ、コードレビュー、デプロイ前の確認で構造や値を調べるときに特に役立ちます。入れ子構造の不一致を見つけやすくなり、大きな配列を確認しやすくなります。また、設定ファイルをGitにコミットした際の差分も読みやすくなります。ただし、不正なJSONを自動修復したり、曖昧な断片から本来の意図を判断したりする機能ではありません。

よくある質問

JSONにコメントは書けますか?

いいえ。標準のJSONにはコメント構文がないため、// commentや/* comment */を含めると検証に失敗します。設定ファイルにコメントが必要な場合は、コメントを定義している形式を使うか、厳密なJSONパーサーへ渡す前にコメントを削除してください。

同じプロパティ名が複数あるとエラーになりますか?

必ずしもエラーにはなりません。JSONの仕様では、オブジェクト内のメンバー名は一意であることが望ましいとされていますが、重複した名前を構文エラーとして扱うかどうかはパーサーによって異なります。PHPのデコードでは通常、後にある値が保持されます。すべての出現箇所を保持する必要がある場合は、検証前に重複を検出してください。

JSON Linesファイルも検証できますか?

1つのJSON文書としては検証できません。NDJSONとも呼ばれるJSON Linesは、各行に個別のJSON値を格納します。一方、通常のJSONパーサーは最上位の値が1つであることを前提とします。各行を個別に検証するか、レコードを1つのJSON配列に変換してください。

オブジェクトのプロパティ順は重要ですか?

アプリケーションでは、JSONオブジェクトのプロパティ順に依存しないでください。配列には順序がありますが、オブジェクトは名前付きメンバーの集合です。別のパーサーやシリアライザーでは、メンバーが異なる順序で出力されることがあります。並び順に意味がある場合は、値を配列に入れてください。

正しく見えるJSONファイルが検証に失敗するのはなぜですか?

目に見えないバイトオーダーマーク、不正なUTF-8、エスケープされていない制御文字が原因で、正しく見えるデータでも検証に失敗することがあります。ターミナルからコピーした際に、ステータスラベルやタイムスタンプなどの接頭部分が混入する場合もあります。生のバイト列を確認するか、エンコーディングと制御文字を表示できるエディターでファイルを開いてください。

最後に確認すること

修正したJSONをデプロイする前に、見た目上の値だけでなくデータ型も比較し、エスケープシーケンスが変わっていないことを確認してください。そのうえで、JSONを使用するアプリケーションまたはスキーマ検証を実行します。第三者から受け取ったデータの問題を調査するときは、整形によって不具合の発生元が分かりにくくならないよう、元のレスポンスを変更せずに保管してください。

人気のツール