JSONスキーマ生成
このツールは、1つ以上のサンプルJSONペイロードから、標準のJSON Schema(Draft 2020-12)仕様を自動で推論します。requiredフィールドのヒューリスティックを設定でき、異質なサンプル間で型を拡張し、フォーマット(email、date-time、uuid、uri)を自動検出し、enumを発見し、さらに推論したスキーマに対するドキュメントの検証を同じページ上でライブに行えます。
✓往復検証テスト
生成したスキーマに対してJSONドキュメントをリアルタイムで検証します。
JSONスキーマ生成はどう動きますか?
JSON Schemaの定義を手で書くのは、繰り返しが多く、冗長で、ミスが起きやすい作業です。ToolsByUsのスキーマ推論エンジンは、入力サンプルにわたる多パスの構造集約によって、これを自動化します。
- 型推論と型の拡張:データの値を再帰的に調べます。同じキーでサンプル間に異なるスカラー型が見つかった場合(整数と文字列など)、有効なバリエーションを拒否する代わりに、型の拡張によって許容型の配列
type: ["integer", "string"]を生成します。 requiredフィールドのヒューリスティック:出現頻度の比率を計算します。分析対象のサンプルレコードの100%に存在するプロパティは、required制約の配列に登録されます。- フォーマットと意味のマッチング:文字列フィールドを、
date-time(ISO 8601)、email(RFC 5322)、uuid(RFC 4122/9562)、uri(RFC 3986)のRFC標準と照合します。 - enumの抽出:設定可能なしきい値を下回る反復的な低カーディナリティの値(statusフィールドなど)を検出し、厳密なenumセットを生成します。
最も重要な点として、このジェネレーターにはインタラクティブなRound-Trip Validatorが組み込まれています。候補のペイロードを貼り付ければ、生成されたスキーマに対して即座にテストし、適合を確認できます。
サンプルペイロードの入力
{"id": "usr_101", "email": "[email protected]", "active": true}出力例
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": ["id", "email", "active"],
"properties": {
"id": { "type": "string" },
"email": { "type": "string", "format": "email" },
"active": { "type": "boolean" }
}
}JSONスキーマ生成が対応するオプションとエッジケースは?
| パラメータ | 型 | デフォルト | 動作とエッジケース |
|---|---|---|---|
| inferRequired | 真偽値 | true | 提供されたすべてのサンプルに含まれるプロパティを自動的に必須としてタグ付けします。 |
| typeWidening | 真偽値 | true | 複数の型が観測されたフィールドが、特定の型を強制するのではなく、それらのいずれかの型をサポートできるようにします。 |
| detectFormats | 真偽値 | true | 文字列パターンを検査して、RFC形式:email、date-time、uuid、uriを検出します。 |
| enumThreshold | 整数 | 4 | 文字列/数値プロパティを固定列挙セットとして分類するための最大ユニーク値数。 |
| スキーマドラフト | 標準 | Draft 2020-12 | モダンな完全準拠のJSON Schema仕様ドラフト2020-12を出力します。 |
よくある質問
このツールが生成するJSON Schemaのバージョンは?
このツールはJSON Schema Draft 2020-12を出力します。JSON Schema組織が推奨する最新の安定版仕様です。Python、Node.js、Go、Rust、Javaの現代的な検証ライブラリと互換性があります。
サンプルドキュメントを複数渡せますか?
はい、渡せます。単一のJSONオブジェクトでも、複数のオブジェクトからなるJSON配列でも貼り付けられます。ジェネレーターは全サンプルにわたってプロパティの形を集約し、ユニオン型と正確なrequiredフィールドのヒューリスティックを備えた包括的なスキーマを生成します。
ライブ検証はどのように動作しますか?
下のペインは、その時点で生成されているスキーマに対してリアルタイムのスキーマバリデーターを実行します。上でサンプルデータやオプションを変更すると、テストドキュメントは即座に検証され、違反の正確なパスとキーワードが表示されます。
サンプルのスキーマやデータはサーバーに送信されますか?
いいえ。スキーマ推論と検証はすべて、ネットワークリクエストゼロでブラウザ内のローカル処理として100%実行されます。社外秘のスキーマや本番ログのプライバシーは完全に守られます。
APIではオプション扱いのフィールドがrequiredと判定されるのはなぜですか?
推論は与えられたサンプルしか見えず、全サンプルに存在するプロパティはrequiredだと見なされるからです。そのフィールドが本当に存在しないケースを含むドキュメントの配列を貼り付ければ、requiredのリストから自動的に外れます。オプションのフィールドをジェネレーターに教える最速の方法です。
スキーマの代わりにTypeScriptの型を得られますか?
はい、別のツールからどうぞ。JSON→TypeScript変換ツールが、同じサンプルドキュメントからinterfaceを直接出力します。複数の言語でランタイム検証をしたいなら、スキーマのほうが適した成果物です。消費者がTypeScriptのコードベースだけで、チェックがコンパイル時に行われるなら、生成された型のほうが向いています。