検証前に確認する項目
- JSONとJSON Schemaが通常のJSON構文として正しいこと
- $schemaと実際に利用するValidatorのDraftが一致していること
- 外部$refではなく、検証に必要な定義がローカルに含まれていること
- formatを注釈と制約のどちらとして扱うか決めていること
JSON Schemaで検証する手順
- 左へ検証するJSON、右へJSON Schemaを貼り付けるかファイルを開きます。
- Schema仕様、format、Schema自己検証、エラー上限を選択します。
- 検証を実行し、適合・不適合、エラー数、警告、処理時間を確認します。
- エラー項目を選び、JSON Pointerで示された入力またはSchema位置へ移動します。
- 修正後に再検証し、エラーが解消したことを確認します。
エラー結果を読むポイント
instanceLocationは検証対象JSONの位置、keywordLocationは違反したSchemaキーワードの位置です。requiredのように値そのものが存在しないエラーでは、instanceLocationは親オブジェクトを示します。
anyOfやoneOfのエラーは、分岐のどれにも一致しない、または複数の分岐に一致した場合に発生します。分岐条件が重なっていないかも確認してください。
Schema自体の構文やキーワード値が不正な場合は、データを直す前にSchema側のエラーを解消してください。
具体例:顧客登録APIの入力JSONを検証する
顧客登録APIでは、idを正の整数、emailをメール形式、tagsを重複のない文字列配列として定義できます。実際のJSONに0のid、不正なメール文字列、重複タグが含まれると、それぞれminimum、format、uniqueItemsのエラーになります。
エラー一覧のJSON位置とSchema位置を照合すると、値の修正が必要なのか、Schemaの制約が厳しすぎるのかを分けて判断できます。
- 個人情報を含まない検証用JSONと利用中のJSON Schemaを用意します。
- $schemaがある場合は自動判定を使い、必要ならDraftを明示します。
- formatを制約として扱う場合だけ「厳密に検証する」を選択します。
- 検証後、エラー項目を選び、該当するJSONまたはSchemaの位置を修正します。
外部$refは取得しません。共有して検証する場合は、必要な定義を$defsなどで1つのSchemaへまとめてください。
よくある質問
- formatを注釈として扱うとはどういう意味ですか?
- Draft 2020-12ではformatを注釈として扱う構成があります。メールや日時の文字列を必ず制約として検証したい場合は、formatの厳密検証を選択してください。
- 外部URLの$refを検証できますか?
- このツールは外部通信を行わないため対応していません。参照先を$defsへまとめるか、事前に1つのSchemaへ結合してから検証してください。
ブラウザで試す
入力内容はブラウザ内で処理されます。元データを残したうえで、結果を確認してから保存・共有してください。
JSON Schema検証ツールを開く