コンテンツにスキップ
ToolsMinify logo
開発者ツール

JSONスキーマジェネレーター

ブラウザでJSONサンプルからドラフトJSONスキーマを生成します - アカウント不要、アップロード不要、CLI不要。APIレスポンス、またはより良いのはレコードの配列を貼り付けます。ネストされたオブジェクトはネストされたスキーマになり、配列はすべての要素(最初の要素だけでなく)から型付けされ、同一の欠落キーパターンはオプションになります(必須から省略され…

JSONスキーマジェネレーターについて

ブラウザでJSONサンプルからドラフトJSONスキーマを生成します - アカウント不要、アップロード不要、CLI不要。APIレスポンス、またはより良いのはレコードの配列を貼り付けます。ネストされたオブジェクトはネストされたスキーマになり、配列はすべての要素(最初の要素だけでなく)から型付けされ、同一の欠落キーパターンはオプションになります(必須から省略されます)。JSON nullは、オプションに縮退する代わりに、null許容型になります。値がメール、URI、UUID、日付、または日時と似ている場合、文字列形式が推測されます。Draft-07または2020-12を選択し、スキーマをコピーまたはダウンロードします。同じサンプルからインターフェースを作成するにはJSON to TypeScript Converterと組み合わせるか、ペイロードがミニファイされて到着した場合はJSON Minifierと組み合わせます。

JSONスキーマジェネレーターの使い方

  1. JSONを貼り付けます(レコードの配列は、単一のオブジェクトよりもオプションのキーをより正確に推測します)。オプションとnull許容の違いを最初に確認したい場合は、サンプルをロードします。
  2. スキーマのタイトルを設定し、Draft-07(デフォルト)または2020-12を選択します。オブジェクトが追加のプロパティを拒否するか許可するかを選択します。
  3. 推論レポートを読みます:プロパティ数、必須キー、オプションキー、および形式のヒント。警告は、空の配列、空のオブジェクト、すべてのnullフィールド、および混合ユニオンをフラグ付けします。
  4. JSONスキーマをコピーするか、.schema.jsonファイルをダウンロードします。AJV、Zod(コンバーター経由)、OpenAPIドラフト、またはCIバリデーターで使用します。
  5. 何もサーバーに送信されません。無効なJSONは行と列を報告します。

JSONスキーマジェネレーターの例

レコードの配列からのオプションキー

[{"sku":"A1","qty":2},{"sku":"B7","qty":1,"gift":true}] は、skuとqtyを必須とし、giftがオプション(requiredに含まれない)である配列スキーマになります。

null許容とオプション

一方の行でemailが欠落し、もう一方の行でnoteがnullである2人のユーザーは、emailをオプションの文字列として、noteを型 ["string","null"] として出力します。欠落したキーとJSON nullは区別されたままです。

文字列形式のヒント

メール、HTTPS URL、UUID、ISO日付、または日時と似ている値は、format: email, uri, uuid, date, または date-time を取得し、バリデーターがそれらを強制できるようにします。

空のコンテナ

{"items":[],"meta":{}} は、itemsを空のitemsスキーマを持つ配列として、metaをプロパティのないオブジェクトとして型付けします。警告は、より豊富なサンプルを貼り付けるように指示します。

Draft-07 vs 2020-12

両方のドラフトは同じ推論された形状を共有します。Draft-07は、ほとんどのツールがまだ期待するクラシックな$schema URIを使用します。スタックがその方言を文書化している場合は、2020-12に切り替えます。

一般的な使用例

  • OpenAPI / AsyncAPI仕様が存在する前にJSONスキーマをドラフトする
  • CIでAJVを使用してWebhookペイロード(Stripe、GitHub、Slack)を検証する
  • フィクスチャファイルを契約テストの契約に変換する
  • 設定ファイルと機能フラグペイロードのスキーマをブートストラップする
  • 同じサンプルJSONからのTypeScriptインターフェースと組み合わせる

JSONスキーマジェネレーターに関するよくある質問

サンプルJSONからJSONスキーマを生成するにはどうすればよいですか?
JSONサンプルを貼り付け、タイトルを設定し、ドラフトを選択し、生成されたスキーマをコピーします。生成はブラウザで実行されます。ネストされたオブジェクトと配列は完全にウォークされ、配列アイテム全体で欠落しているキーはrequiredから省略されます。
オプションとnull許容の違いは何ですか?
オプションとは、一部の配列アイテムにキーが存在しなかったため、requiredにリストされていないことを意味します。null許容とは、キーが存在し、値がJSON nullであったため、型にnullが含まれることを意味します(例:type: ["string","null"])。このジェネレーターは、サンプルが両方を示さない限り、それらを結合しません。
どのJSONスキーマドラフトを使用すべきですか?
Draft-07は、バリデーターとエディターで最も広くサポートされています。ツールがその$schema URIを明示的に期待する場合は、2020-12を使用します。推論されたプロパティはどちらの方法でも同じです。
itemsまたはpropertiesが空なのはなぜですか?
空の配列には検査する要素がないため、itemsは{}です。空のオブジェクトにはキーがないため、propertiesは空です。具体的な型を取得するには、データが入力された例を貼り付けてください。
文字列形式は常に正しいですか?
形式はサンプル値からのヒューリスティックです(email、uri、uuid、date、date-time)。本番契約をロックする前にそれらを確認してください - サンプルでメールのように見える文字列が常にメールであるとは限りません。
私のJSONはアップロードされますか?
いいえ。スキーマ生成はこのタブでのみ実行されます。サンプルがブラウザを離れることはありません。
これはJSON to TypeScriptコンバーターとどう違うのですか?
どちらも同じ種類のサンプルをウォークします。このページは、バリデーターとOpenAPIドラフト用のJSONスキーマを出力します。TypeScriptコンバーターは、アプリケーションコード用のインターフェースまたは型エイリアスを出力します。契約と型付きクライアントが必要な場合は、同じペイロードから両方を使用してください。
additionalProperties: falseは不明なキーを拒否しますか?
はい、Reject extrasをオンにした場合です。これは厳密なAPI契約に役立ちます。クライアントがまだサンプルで見ていないフィールドを送信する可能性がある場合は、Allow extrasに切り替えてください。