ツール

JSON → Zod スキーマ変換ツール

サンプル JSON から Zod スキーマを生成し、同じ形を実行時に検証しつつ TypeScript の型としても推論できるようにします。

ブラウザ内で実行コード変換1.4万
無料

入力

0 B

結果

結果はここに表示されます。

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 実行時 バリデーション