JSON → Zodスキーマ変換

JSONを貼り付けて、完全なネスト型推論とランタイムバリデーション付きのZodスキーマを生成します。

このツールについて

JSON → Zodスキーマ変換ツールは、あらゆるJSONデータからZodバリデーション スキーマを自動生成する無料のブラウザベースツールです。APIリクエストの バリデーション、フォーム入力、環境変数のパースのためにスキーマ定義を 手作業で書く代わりに、生のJSONを貼り付けるだけで、正確ですぐに使える Zodスキーマをミリ秒単位で取得できます。

このコンバーターはJSON構造全体にわたって再帰的に型推論を実行します。 プリミティブ値は対応するZodバリデーターにマッピングされます — z.string()z.number()z.boolean()z.null() です。 整数値は検出され、より厳密なバリデーションのために z.number().int() でアノテーションされます。ネストされた オブジェクトはフィールドキーから名前が生成され、独自のスキーマ定数として 抽出されます(例えば、address フィールドからは addressSchema 定数が生成されます)。配列は要素の型の一貫性が分析され、 混合型が含まれる場合は z.union() が自動生成されます。 空の配列は後で調整できるよう z.array(z.unknown()) がデフォルトに なります。

すべての処理はブラウザ内で完結します。JSONデータが外部に送信されることは ありません — サーバーとの通信、ログ記録、入力に対するサードパーティの 分析は行われません。内部APIレスポンス、認証トークン、シークレットを含む設定 ファイルなど、機密性の高いペイロードにも安全にお使いいただけます。 TypeScriptインターフェースも必要な場合は、 JSON → TypeScript変換ツールもお試しください。

追加オプションにより、プロジェクトのバリデーション要件に合わせて出力を カスタマイズできます。.optional() を切り替えて部分バリデーション スキーマ用にすべてのフィールドをオプショナルにする設定、null値を受け入れる フィールドに .nullable() 修飾子を追加する設定、未知のキーを 拒否する .strict() モードの有効化が可能です。ルートスキーマ名は 設定可能で、リネームなしでコードベースに直接統合できます。関連する変換は、 JSONスキーマジェネレーターJSON → Python変換ツールもご覧ください。

使い方

  1. 左側のJSON入力パネルにJSONを貼り付けるか入力します。
  2. 入力に合わせて右パネルにZodスキーマ出力が自動更新されます。
  3. ルート名フィールドでトップレベルのスキーマ変数名をカスタマイズします(デフォルト: "Root")。
  4. **.optional()**を有効にすると、部分バリデーションスキーマ用にすべてのフィールドがオプショナルになります。
  5. **.nullable()**を有効にすると、null値を返すAPI用にすべてのフィールドにnullable修飾子が追加されます。
  6. **.strict()**を有効にすると、未知のキーを拒否するstrictオブジェクトスキーマが生成されます。
  7. CopyをクリックするかCtrl+Shift+Cを押して、生成されたZodスキーマをクリップボードにコピーします。

JSON → Zodスキーマの人気サンプル

すべての15件のJSON → Zod例を見る →

よくある質問

Zodとは何ですか?なぜ使うべきですか?

ZodはTypeScriptファーストのスキーマ宣言・バリデーションライブラリです。コンパイル時にのみ存在するTypeScriptインターフェースとは異なり、Zodスキーマはランタイムでデータを検証します。これにより、APIレスポンス、フォーム入力、環境変数、および信頼境界を越えるあらゆるデータのバリデーションに不可欠です。Zodはスキーマからの型推論も可能で、単一の真実の源からコンパイル時とランタイムの両方の安全性を提供します。

ネストされたオブジェクトはどのように処理されますか?

各ネストされたオブジェクトは独自の名前付きZodスキーマ定数として抽出されます。名前はフィールドキーをcamelCase変換し、'Schema'サフィックスを付けて生成されます。例えば、shipping_addressというフィールドはshippingAddressSchema定数を生成します。名前の衝突がある場合、数値サフィックスが自動的に付加されます(addressSchema、addressSchema2など)。

混合型の配列はどうなりますか?

コンバーターは配列内のすべての要素を検査し、異なるZod型をすべて収集します。すべての要素が同じ型の場合、単純なz.array()が生成されます(例:z.array(z.string()))。複数の型が見つかった場合、配列内にz.union()が生成されます(例:z.array(z.union([z.string(), z.number()])))。空の配列はz.array(z.unknown())がデフォルトです。

データは安全ですか?

はい。すべてのスキーマ生成はJavaScriptを使用してブラウザ内で完全に実行されます。データがサーバーに送信されることはありません。ブラウザの開発者ツールのNetworkタブで確認できます。

.optional()と.nullable()の違いは何ですか?

Zodにおいて、.optional()はフィールドがundefined(またはオブジェクトから欠如)できることを意味し、.nullable()はフィールドがnullになれることを意味します。両方を組み合わせることも可能です:z.string().nullable().optional()はstring、null、undefinedを受け入れます。APIレスポンスから欠落する可能性のあるフィールドには.optional()を、明示的にnullを返すフィールドには.nullable()を使用します。

strictモードとは何ですか?

strictモードを有効にすると、生成されるスキーマはz.object({...})の代わりにz.object({...}).strict()を使用します。strictモードでは、入力オブジェクトにスキーマで定義されていないキーが含まれている場合、Zodがエラーをスローします。予期しないフィールドを拒否したいAPIリクエストボディのバリデーションに有用です。

生成されたスキーマでz.inferを使ってTypeScript型を取得できますか?

はい。生成されるコードには'type Root = z.infer<typeof rootSchema>'のような型推論文が含まれます。これにより、同じスキーマ定義からランタイムバリデーションとコンパイル時の型安全性の両方が得られ、これが個別の型定義に対するZodの最大の利点の一つです。

関連ツール