ツール
入力
結果
結果はここに表示されます。TypeScript の型はコンパイル時に消えますが、Zod スキーマはレスポンスが実際に届いたときにも残っており、z.infer で型に戻すこともできます。このツールは quicktype の typescript-zod レンダラーを使い、サンプルからスキーマを生成します。出力はバージョン 4 が推奨する import * as z from "zod" の形で zod をインポートし、オブジェクトの形ごとに 1 つのスキーマを宣言し、それぞれの隣に推論された型をエクスポートします。私たちのテストでは、生成されたコードを zod 4 で実行し、生成元のサンプルそのものを受け付けることを確認しています。これは生成されたスキーマとして最低限満たすべき条件です。
動作のしくみ
- 配列の一部の要素で欠けているキーは .optional() になり、ときどき null になるキーは z.null() とのユニオンになります。
- スキーマは依存関係の順に出力されるため、ネストされたスキーマは、それを使うオブジェクトスキーマより先に宣言されます。
- 日付の検出を有効にすると、ISO 形式のタイムスタンプは文字列を Date にパースする z.coerce.date() になります。オフのままなら z.string() です。
- スキーマは素の z.object 呼び出しなので、パース時に未知のキーは取り除かれます。別の挙動が必要なら、手作業で z.strictObject や z.looseObject に切り替えてください。
データの行き先
どこにも行きません。このツールは完全にブラウザ内で動作します。貼り付けたテキストはページが処理し、サーバーに送信されることも、ログに記録されることもありません。
このツールは無料で登録不要です。結果は開いているページの中にだけあり、どこにも保存されません。
必要なポイント
このツールは無料です。ログインもポイントも必要ありません。
よくある質問
- 出力は Zod 3 でも動きますか?
- はい。使っている z.object、z.array、z.union、z.null、.optional()、z.coerce.date() はどちらのメジャーバージョンにもあり、名前空間インポートも 3.x で動作します。バージョン間で変わったのはエラーの整形と一部の高度な API で、生成されるコードにはどれも登場しません。
- トップレベルのスキーマが別のスキーマの配列になるのはなぜですか?
- サンプルが配列だからです。要素の形には独自のスキーマ(GitHub のサンプルでは RepoElementSchema)が作られ、トップレベルの名前は配列に使われます。そのため、同じファイルで 1 件だけでもリスト全体でも検証できます。
- 生成されたスキーマはどのくらい厳密ですか?
- サンプルとちょうど同じ程度で、あまり厳密ではありません。文字列フィールドは貼り付けた値だけでなく任意の文字列を受け付け、数値は整数かどうかにかかわらず z.number() になります。API の仕様が 1 つのサンプルより多くを語っている箇所では、後から .int()、z.url()、z.email()、z.enum() で絞り込んでください。
背後にあるオープンソース
このツールは glideapps/quicktype(Apache-2.0)の上で動作しています。同じ処理を自分のプログラムに組み込みたい場合は、そのライブラリを使ってください。
glideapps/quicktype別の呼び方
- json zod 変換
- zod スキーマ 生成
- json から zod スキーマ 生成
- json zod オンライン
- zod v4 スキーマ
- typescript 実行時 バリデーション