JSON Schema バリデーター

JSONデータをJSONスキーマに対してオンライン検証。Draft-07・Draft 2020-12対応。エラーパス(例:$.items[0].name)と詳細メッセージを表示。無料、完全ブラウザ完結。

100% クライアントサイド データはブラウザ外に出ません 無料 · 登録不要

使い方

  1. 左側に JSONスキーマ、右側に JSONデータを貼り付けます。
  2. ドロップダウンからスキーマドラフト(Draft-07またはDraft 2020-12)を選択します。
  3. Validate ボタンをクリックします(または Ctrl+Enter)。
  4. 有効な場合、データがスキーマに適合していることを示す緑のメッセージが表示されます。
  5. 無効な場合、各エラーの JSONパス・エラーメッセージ・追加パラメータが一覧表示されます。

Load Example をクリックすると、サンプルのUserスキーマとJSONが自動入力され、すぐに試せます。

エラー出力の見方

各バリデーションエラーは3つの情報を含みます:

  • パス — 失敗した値へのJSONポインター(例:/items/0/price、トップレベルは(root))。
  • メッセージ — AJVによる分かりやすいエラー説明(例:must be integermust have required property ‘name’)。
  • パラメータ — 許可される型・最小値・必要なパターンなどの追加情報。

よく使うJSONスキーマのキーワード

  • type — JSONの型を制限:stringnumberintegerbooleanarrayobjectnull
  • required — オブジェクトに必須のプロパティ名の配列。
  • properties — オブジェクトの各プロパティの制約を定義。
  • additionalProperties: falsepropertiesに定義されていないプロパティを拒否。
  • minimum / maximum — 数値の範囲制約。
  • minLength / maxLength — 文字列の長さ制約。
  • pattern — 正規表現で文字列を検証(例:”^[a-z]+”)。
  • enum — 固定の値セットに制限。
  • items — 配列要素のスキーマを定義。

スキーマの例

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "required": ["name", "age"],
  "properties": {
    "name":  { "type": "string", "minLength": 1 },
    "age":   { "type": "integer", "minimum": 0 },
    "email": { "type": "string" }
  },
  "additionalProperties": false
}

有効なデータ:{"name":"Alice","age":30}
無効なデータ:{"name":"","age":-1,"extra":true} — 3つのエラーが発生します。

FAQ

対応しているJSONスキーマのドラフトは何ですか?

Draft-07(最も広く使用されており、OpenAPI 3.0や多くのバリデーターと互換性あり)とDraft 2020-12(最新仕様)に対応しています。検証前にドロップダウンでドラフトを切り替えてください。

/user/ageのようなエラーパスはどういう意味ですか?

エラーパスはJSON Pointer構文(RFC 6901)に従います。/user/ageはuserオブジェクト内のageプロパティが検証に失敗したことを意味します。ルートオブジェクトは/で表し、配列アイテムは/items/0、/items/1などの形式になります。

JSONスキーマとは何ですか?

JSONスキーマはJSONドキュメントを注釈・検証するための語彙です。JSONオブジェクトの構造・型・必須フィールド・値の範囲・パターンを定義できます。APIのリクエスト/レスポンス検証、設定ファイルの検証、データパイプラインの検証などに広く活用されています。

配列をルートとするJSONを検証できますか?

はい。スキーマを配列として定義し(例:{"type": "array", "items": {"type": "string"}})、データに["a", "b"]のようなJSON配列を貼り付ければ検証できます。

データはサーバーに送信されますか?

いいえ。検証はすべてブラウザ内でAJVライブラリを使用して実行されます。スキーマとJSONデータはお使いのデバイスから外に出ることはありません。