開発・デバッグ支援

JSON Schemaバリデーター

JSON Schemaと検証対象のJSONデータを貼り付けて「検証」を押すと、データがSchemaに適合しているかをその場で確認できます。既存の「JSON構文チェック」がJSONの構文チェックのみを行うのに対し、本ツールはJSON SchemaによるデータのValid/Invalid判定を行います。

入力データはサーバーへ送信されませんインストール不要無料で使えます

入力例

結果

JSON Schemaと検証対象JSONデータを入力して「検証」を押してください。

このツールでできること

JSON Schemaバリデーターの主な機能です。

  • JSONデータが指定したJSON Schemaに適合しているか(適合/不適合)を判定できます
  • 不適合の場合、不一致箇所(JSONデータ側の位置・Schema側の該当箇所)と理由を確認できます
  • JSONデータ・Schemaいずれの構文エラーかを区別して表示します
  • Draft 4/7/2019-09/2020-12に対応し、判定に用いたDraftを表示します
  • 処理はブラウザ内で完結し、入力を外部へ送信しません

使い方

JSON Schema適合判定の手順を説明します。

手順を見る
  1. JSON Schemaを入力します
  2. 検証対象のJSONデータを入力します
  3. 「検証」を押します
  4. 適合/不適合と、不適合の場合はエラー一覧を確認します

JSON Schemaバリデーターの仕組みと注意点

このツールの動作の仕組みを説明します。

詳しい解説を見る

対応するJSON Schema Draft

Draft 4 / 7 / 2019-09 / 2020-12 に対応します。$schemaキーワードの値から自動的にDraftを判定します。判定できない場合($schemaが無い、または未知の値の場合)は2020-12として検証し、その旨を表示します。Draft 6のSchemaはDraft 7として検証します。

$refはSchema内部の参照のみに対応します

#/...や$defsなど、同一Schema内での参照には対応しますが、外部URLを参照する$refの取得は行いません(プライバシー・安全性のため)。外部参照や解決できない$refを含むSchemaは、専用のメッセージで案内します。

formatキーワードについて

formatは本ツールが対応している形式(date・email・uri等)についてのみ検証されます。対応していないformat名は検証されません。

エラー一覧の表示

不適合の場合、末端の具体的な違反を最大100件まで表示します(超過時はその旨を明示します)。JSONデータ側の位置・Schema側の該当箇所・理由をあわせて表示します。

入力上限・パフォーマンス

JSONデータ・Schemaともに最大500,000文字、ネストは最大64階層までを上限としています。Schemaのpatternによっては検証に時間がかかる場合があるため、検証はWeb Worker上で実行し、一定時間内に完了しない場合は打ち切ります。

対象外の機能

JSONデータからJSON Schemaを自動生成する機能は対象外です。JSONの構文チェックのみが必要な場合はJSON構文チェックをご利用ください。入力されたJSONデータ・Schemaを外部サーバーへ送信することもありません。

よくある質問

JSON構文チェック(JSON Validator)との違いは何ですか?

JSON構文チェックはJSONとして構文が正しいかのみを判定します。本ツールはJSONデータが指定のJSON Schemaに適合しているか(型・必須項目・形式など)を判定します。

対応しているJSON Schema Draftは何ですか?

Draft 4 / 7 / 2019-09 / 2020-12 に対応しています。$schemaの値から自動判定し、判定できない場合は2020-12として検証します。

外部URLを参照する$refは使えますか?

いいえ。プライバシー・安全性のため、外部URLへの参照は取得しません。Schema内部の参照(#/...やdefs等)のみに対応しています。

エラーが多い場合はどうなりますか?

最大100件まで表示し、超過した場合はその旨を明示します。

検証に時間がかかる場合はどうなりますか?

Schemaのpatternによっては検証に時間がかかることがあります。一定時間内に完了しない場合は打ち切り、その旨を表示します。

入力したJSONデータやSchemaはサーバーへ送信されますか?

いいえ。検証処理はすべてブラウザ内で完結しており、入力内容がサーバーへ送信されることはありません。