JSON Schema 生成・検証ツール
サンプルからJSON Schemaを生成したり、JSONドキュメントをスキーマに対して検証したりできます。すべてブラウザー内で動作し、データがお使いのデバイスから外に出ることはありません。
スキーマの生成と ajv の検証はブラウザー内でローカルに実行されるため、あなたのJSONサンプル・スキーマ・ドキュメントがアップロードされることはありません。
代わりにTypeScriptの型が必要ですか?JSON to TypeScriptをお試しください。
JSON Schema 生成・検証ツール について
このJSON Schema生成ツールはJSONサンプルをすぐ使えるJSON Schemaに変換し、組み込みのバリデーターは指定したスキーマに対して任意のJSONドキュメントを検証します。生成モードでは、サンプルをたどってオブジェクト・配列・文字列・数値・真偽値・nullの型を推測し、配列要素を統合し、すべてのプロパティを必須にしたり、additionalProperties を false に設定したり、email・date・date-time・uri・uuid のような文字列フォーマットを検出したりできます。出力には draft-07 または draft 2020-12 を選べます。検証モードでは ajv を allErrors と ajv-formats とともに実行し、各失敗をそのインスタンスパスとメッセージとともに列挙します。APIの開発者・バックエンドエンジニア・JSONの契約を定義またはテストするすべての人のために作られています。すべてはブラウザー内で動作するため、貼り付けたサンプルとスキーマはお使いのデバイスに留まります。
機能
- 貼り付けたJSONサンプルから、オブジェクト・配列・文字列・数値・整数・真偽値・nullの正しい型でJSON Schemaを推測
- 配列要素を単一の items スキーマに統合し、空配列には items:{} を出力
- オブジェクトごとに、すべてのプロパティを必須にするトグル
- additionalProperties:false のトグルで、オブジェクトを既知のキーに限定
- email・date・date-time・uri・uuid の値に対する任意の文字列フォーマット推測
- draft-07 または draft 2020-12 の出力を選択($schema の方言を設定)
- ajv を allErrors と ajv-formats とともに使い、任意のJSONドキュメントをスキーマに対して検証
- 生成したスキーマをコピー、または schema.json としてダウンロード
JSON Schema 生成・検証ツール の使い方
- スキーマを作成するなら「Generate」、ドキュメントを検証するなら「Validate」を選びます。
- Generateでは、JSONサンプルを貼り付け、required・additionalProperties・フォーマットのオプションを切り替えます。
- draft-07 または draft 2020-12 を選び、できあがった schema.json をコピーまたはダウンロードします。
- Validateでは、左にJSON Schema、右にJSONドキュメントを貼り付けます。
- valid/invalidのバッジと、それぞれインスタンスパス付きのエラー一覧を読みます。
例
入力
{
"id": 1,
"name": "Ada",
"email": "ada@example.com",
"tags": ["a", "b"]
}
出力
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"id": { "type": "integer" },
"name": { "type": "string" },
"email": { "type": "string", "format": "email" },
"tags": { "type": "array", "items": { "type": "string" } }
},
"required": ["id", "name", "email", "tags"]
}
required とフォーマット推測をオンにすると、サンプルから draft-07 のスキーマが生成されます。
よくあるエラーとトラブルシューティング
- すべてのキーが存在するのに、生成されたスキーマに required 配列がない。 — 「Mark all properties required」をオンにしてください。デフォルトでは生成ツールは型のみを推測し、任意フィールドを過度に制約しないよう required を空のままにします。
- ドキュメントを検証する前に「Invalid JSON Schema」と報告される。 — スキーマのペイン自体が、ajv がコンパイルできる有効なJSONオブジェクトである必要があります。まずスキーマ内のJSON構文や不明なキーワードを修正してください。
- 日付に見える値が、ただの文字列として型付けされる。 — 「Infer string formats」を有効にしてください。検出は控えめで、サンプル値が email・date・date-time・uri・uuid のパターンに一致したときだけ format を追加します。
- draft 2020-12 のスキーマが、draft-07 を期待するバリデーターに拒否される。 — draftセレクターを対象に合わせて切り替えてください。$schema のURLと、2つのドラフト間の細かな方言の違いだけが変わります。
よくある質問
- 生成ツールはどのJSON Schemaのドラフトを使いますか?
- デフォルトは draft-07 で、draft 2020-12 のオプションもあります。この選択は出力の $schema 方言URLと、ドラフト間の細かな違いを設定します。推測される構造はそれ以外は同じです。
- スキーマを生成するとき、必須プロパティはどう決まりますか?
- デフォルトでは、どのプロパティも必須にされないため、スキーマは部分的なオブジェクトを受け入れます。「Mark all properties required」をオンにすると、各オブジェクトのすべてのキーがその required 配列に追加されます。
- バリデーターはエラーをどう報告しますか?
- ajv を allErrors を有効にして実行するため、すべての失敗を一度に得られます。各エラーはJSONのインスタンスパス(例:/items/0/id)と人間が読めるメッセージを表示し、不足している必須キーや予期しない追加プロパティも含みます。
- 生成ツールは email や date のような文字列フォーマットを推測しますか?
- はい、「Infer string formats」がオンのときです。サンプルの文字列値を email・date・date-time・uri・uuid のパターンと照合し、一致した format キーワードを追加します。どれにも一致しない値はプレーンな文字列のままです。
- 配列のスキーマはどう推測しますか?
- すべての配列要素のスキーマを単一の items スキーマに統合します。混在するオブジェクト要素はプロパティごとに統合され、いずれかの要素に欠けているキーは required から外れ、空配列は items:{} になります。
- 私のJSONサンプルやスキーマはどこかにアップロードされますか?
- いいえ。生成も検証も、ajv を含め完全にブラウザー内で実行されるため、貼り付けたサンプル・スキーマ・ドキュメントはローカルで処理され、お使いのデバイスに留まります。
関連ツール
すべての ArrayKit ツール