本文へ移動
Develop Tools
← 使い方ガイドへ戻る

JSON SchemaでJSONを検証し、エラー位置を確認する方法

JSON Schemaを書いただけでは、実際のAPIリクエストや設定JSONが制約を満たすかは分かりません。正常系と異常系のJSONを検証し、インスタンス位置とSchema位置を照合すると、実装前に入力仕様の食い違いを見つけられます。

JSONとJSON Schemaを入力し、エラー位置を確認して修正する流れ
JSONとJSON Schemaを入力し、エラー位置を確認して修正する流れ

検証前に確認する項目

  • JSONとJSON Schemaが通常のJSON構文として正しいこと
  • $schemaと実際に利用するValidatorのDraftが一致していること
  • 外部$refではなく、検証に必要な定義がローカルに含まれていること
  • formatを注釈と制約のどちらとして扱うか決めていること

JSON Schemaで検証する手順

  1. 左へ検証するJSON、右へJSON Schemaを貼り付けるかファイルを開きます。
  2. Schema仕様、format、Schema自己検証、エラー上限を選択します。
  3. 検証を実行し、適合・不適合、エラー数、警告、処理時間を確認します。
  4. エラー項目を選び、JSON Pointerで示された入力またはSchema位置へ移動します。
  5. 修正後に再検証し、エラーが解消したことを確認します。

エラー結果を読むポイント

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の制約が厳しすぎるのかを分けて判断できます。

  1. 個人情報を含まない検証用JSONと利用中のJSON Schemaを用意します。
  2. $schemaがある場合は自動判定を使い、必要ならDraftを明示します。
  3. formatを制約として扱う場合だけ「厳密に検証する」を選択します。
  4. 検証後、エラー項目を選び、該当するJSONまたはSchemaの位置を修正します。

外部$refは取得しません。共有して検証する場合は、必要な定義を$defsなどで1つのSchemaへまとめてください。

よくある質問

formatを注釈として扱うとはどういう意味ですか?
Draft 2020-12ではformatを注釈として扱う構成があります。メールや日時の文字列を必ず制約として検証したい場合は、formatの厳密検証を選択してください。
外部URLの$refを検証できますか?
このツールは外部通信を行わないため対応していません。参照先を$defsへまとめるか、事前に1つのSchemaへ結合してから検証してください。

ブラウザで試す

入力内容はブラウザ内で処理されます。元データを残したうえで、結果を確認してから保存・共有してください。

JSON Schema検証ツールを開く