onlinetools.dev

JSON Schema検証・生成

JSON をスキーマで検証、またはサンプルデータからスキーマを推論

ローカル実行
loading…
このツールについて

同じ規律の 2 つの方向です。サンプル JSON を貼り付けて、そこから推論された draft-07 スキーマを得るか、データとスキーマを貼り付けて、すべての違反を JSON パス付きの一覧で確認できます。検証は Ajv 上で動きます — ほとんどの Node サービスが使うのと同じエンジンなので、ここを通るものは CI でも通ります。

推論は実運用を見据えています。オブジェクトのキーは型付きプロパティと required エントリになり、配列は全メンバーの形をマージし、整数は浮動小数点数と区別され、一部の配列メンバーにしか現れないキーは正しく required から外されます。結果は、フォーマット、範囲、パターンで締めていくための出発点です。

API レスポンスと設定ファイルは、まさにサードパーティのサーバーに最も置きたくないデータです。推論も検証も、すべてブラウザ内で実行されます。

よくある質問

どの JSON Schema ドラフトに対応していますか?
推論は draft-07 を出力します。エディターとバリデーターの間で最も広くサポートされているドラフトです。検証は draft-07 と、Ajv が非厳格モードで理解する以前のドラフトを受け付けます。2019-09/2020-12 のキーワードも、未知のキーワードが致命的エラーではなく無視されるため、おおむね動きます。
違反パスの $ は何を意味しますか?
JSONPath 流の、ドキュメントのルートです。$.age はトップレベルの age プロパティを、$.items.2.name は 3 番目の配列要素の name を指します。空のパス($)は、違反がドキュメントのルート自体に関するものであることを意味します — 型の誤り、または必須プロパティの欠落です。
なぜ推論されたスキーマが予想より厳しい / 緩いのですか?
与えたサンプルを正確に記述するからです。どこにでも存在するフィールドは required になり、観測された型だけが許可されます。より一般的なスキーマが欲しければ、より多様なサンプル(代表的なオブジェクトの配列)を与えてから手で調整してください — 推論は意図までは知り得ません。
検証は format、pattern などの制約キーワードに対応していますか?
構造的なキーワード(type、required、properties、items、enum、minimum、pattern…)は完全に強制されます。"email" や "date-time" のような format 文字列はアサートされません — これは format をデフォルトでアノテーションとする JSON Schema 仕様に沿った挙動で、誤った安心感を避けるためでもあります。
関連ツール