← JSON ツールに戻る

JSON Schema バリデータ

最終更新:2026年10月2日

JSON ドキュメントを JSON Schema に照らして検証し、満たされなかった制約をそのパスとともに一覧します。ドキュメントと Schema はどちらもブラウザ内で解析・検査されます。

ブラウザ内で動作 アップロード不要 パスごとにエラー Draft 2020-12 のキーワード オープンソース (MIT)

検査する内容

JSON Schema は、文書が取ってよい形を記述します。どのプロパティがあり、それぞれがどの型で、どの範囲やパターンが許されるか、というものです。このページはスキーマに照らして文書を検査し、満たさない箇所をすべて、位置が分かるようパス付きで一覧します。

対応するキーワードは次のとおりです。type、const、enum、required、properties、additionalProperties、minProperties、maxProperties、items(単一スキーマ、またはスキーマのタプル)、minItems、maxItems、uniqueItems、minLength、maxLength、pattern、minimum、maximum、exclusiveMinimum、exclusiveMaximum、multipleOf、allOf、anyOf、oneOf、not、そして同じスキーマ内を指すローカルの $ref です。

意図的に行わないこと

エラーの読み方

失敗はそれぞれパスで報告されます。$ は文書のルート、ドットはプロパティへ進み、角括弧は配列の添字です。required は、そのプロパティを含むべきオブジェクトの位置で報告されます——制約はオブジェクトにあり、欠けているプロパティにあるのではないからです——メッセージにプロパティ名が示されます。anyOf と oneOf は失敗したインスタンスに 1 件だけ報告され、分岐ごとではありません。分岐のエラーで埋め尽くされると本当の問題が見えなくなります。

よくある質問

対応している JSON Schema のキーワードは?

type、const、enum、required、properties、additionalProperties、minProperties、maxProperties、items(単一のスキーマまたはスキーマのタプル)、minItems、maxItems、uniqueItems、minLength、maxLength、pattern、minimum、maximum、exclusiveMinimum、exclusiveMaximum、multipleOf、allOf、anyOf、oneOf、not、そしてローカルの $ref です。

意図的に対応していないものは?

リモートの $ref(同じスキーマ内のポインタのみ解決します)、検証としての format、patternProperties、unevaluatedProperties、if/then/else、dependentSchemas。これらを使うスキーマでも上記のキーワードは検証されますが、未実装のキーワードは強制されません。そのため、これらに依存したスキーマでここが「有効」でも完全な適合結果とはみなさないでください。

検証はサーバーで行われますか?

いいえ。ドキュメントとスキーマはどちらもブラウザ内で JSON.parse により解析され、メモリ上で検査されます。何もアップロードされず、ネットワークを切断しても動作します。

必須プロパティのエラーが親のパスで報告されるのはなぜですか?

制約がそこにあるからです。JSON Schema の required はオブジェクトに適用され、欠けているプロパティに適用されるわけではありません。したがってエラーはオブジェクトのパス($.name ではなく $ など)で報告され、メッセージにプロパティ名が示されます。

anyOf と oneOf はどう報告されますか?

失敗したインスタンスに対して 1 件だけ報告し、分岐ごとには報告しません。anyOf はどの分岐にも一致しないとき失敗し、oneOf は一致した分岐の数が 1 でないとき失敗します。メッセージには一致した数が示されます。各分岐の内部エラーを並べると本当の問題が埋もれてしまいます。

スキーマ自体の誤りも教えてくれますか、それとも文書だけですか?

文書をスキーマに照らして検査します。スキーマ自体が有効な JSON でなければ、その旨を別に伝えます。スキーマを JSON Schema のメタスキーマで検証はしないので、構文は正しくても論理が誤ったスキーマは、単に何にも一致しないことがあります。

2 つの文書を比較したいですか?JSON 差分 が使えます。不具合を見つけましたか?お問い合わせ。