JSON → Zod Generator
TypeScript Runtime Type Inference

JSONからZodスキーマ生成ツール(TypeScriptランタイム検証)開発者ガイド

生のJSONデータからTypeScript Zodスキーマ、型定義、ネストされたバリデーションルールをブラウザ上で自動推論・生成します。

100% Client-Side Privacy
Zero Server Transmission
Presets:
Indent:
Nulls:
Mode:
ソースJSONデータ
import { z } from "zod";

// --- Inferred Nested Sub-Schemas ---
OrderCustomerSchema = z.object({
    id: z.number().int(),
    fullName: z.string(),
    email: z.string().email(),
    phone: z.string(),
    tier: z.string(),
    loyaltyPoints: z.number().int(),
  });
OrderShippingAddressCoordinatesSchema = z.object({
      latitude: z.number(),
      longitude: z.number(),
    });
OrderShippingAddressSchema = z.object({
    street: z.string(),
    suite: z.string(),
    city: z.string(),
    state: z.string(),
    postalCode: z.string(),
    country: z.string(),
    coordinates: OrderShippingAddressCoordinatesSchema,
  });
OrderItemsItemSchema = z.object({
    sku: z.string(),
    title: z.string(),
    quantity: z.number().int(),
    unitPrice: z.number(),
    discount: z.number().nullable(),
    tags: z.array(z.string()),
    inStock: z.boolean(),
  });
OrderPaymentSummarySchema = z.object({
    currency: z.string(),
    subtotal: z.number().int(),
    tax: z.number(),
    shippingFee: z.number().int(),
    grandTotal: z.number(),
    transactionRef: z.string(),
    status: z.string(),
  });

// --- Root Schema Definition ---
OrderSchema = z.object({
  orderId: z.string().uuid(),
  orderNumber: z.string(),
  createdAt: z.string().datetime(),
  isFulfilled: z.boolean(),
  customer: OrderCustomerSchema,
  shippingAddress: OrderShippingAddressSchema,
  items: z.array(OrderItemsItemSchema),
  paymentSummary: OrderPaymentSummarySchema,
});

// --- Inferred TypeScript Types ---
OrderCustomer = z.infer<typeof OrderCustomerSchema>;
OrderShippingAddressCoordinates = z.infer<typeof OrderShippingAddressCoordinatesSchema>;
OrderShippingAddress = z.infer<typeof OrderShippingAddressSchema>;
OrderItemsItem = z.infer<typeof OrderItemsItemSchema>;
OrderPaymentSummary = z.infer<typeof OrderPaymentSummarySchema>;
Order = z.infer<typeof OrderSchema>;
スキーマ複雑度
Depth: 45 Sub-Schemas
推論フォーマット
3 Rules DetectedEmail, UUID, ISO, URL
TypeScriptエクスポート
z.infer ONstrip

100% クライアントサイド構文解析

JSONの構文解析とZodスキーマの合成はすべてブラウザのローカルメモリ内で完結し、外部サーバーへの通信は一切行われません。

TypeScriptとZod v3の完全統合

ネストされたz.object()やz.array()、共用体(Union)、z.inferによる静的型抽出コードをワンクリックで生成します。

スマートな形式判定と型強制

UUID、メールアドレス、ISO日時文字列、URLなどを自動検出し、厳格なランタイムバリデーションルールを策定します。

技術リファレンス&アーキテクチャガイド

JSONからZodスキーマ生成ツール(TypeScriptランタイム検証)開発者ガイド — リファレンスガイド

生のJSONデータからTypeScript Zodスキーマ、型定義、ネストされたバリデーションルールをブラウザ上で自動推論・生成します。

主要パラメータ&設定項目

ルートスキーマ名String

トップレベルのZodスキーマおよびエクスポートされるTypeScript型推論(z.infer)に割り当てる識別子名。

初期値: RootSchema
子スキーマの抽出Boolean

ネストされたオブジェクト階層をプロパティキー名に基づいた独立した再利用可能なスキーマ宣言に分離・抽出します。

初期値: true
スマート形式判定Boolean

RFC 5322メールアドレス、UUID v4、URL、ISO 8601日時文字列を自動検出し、.email()、.uuid()、.url()、.datetime()の制約を付与します。

初期値: true
型強制モードBoolean

文字列などの緩い入力値を解析時に自動変換するため、プリミティブ検証を z.coerce(例: z.coerce.number()、z.coerce.date())でラップします。

初期値: false
Null値・未定義の処理Enum (nullable | nullish | optional)

欠損値やnullを含むJSON値に対し、.nullable()、.nullish()(nullableかつoptional)、または.optional()のいずれを生成するかを指定します。

初期値: nullable
オブジェクトの厳格性Enum (strip | strict | passthrough)

未知のキーの処理方針を設定します。.strip()(未定義キーを除去)、.strict()(未知のキーでエラー)、.passthrough()(未知のキーをそのまま維持)。

初期値: strip

プロの活用テクニック&推奨設定

配列要素の共用体(Union)正規化

異なる構造を持つ配列要素を解析する際、本ツールは自動的に共用体スキーマ(z.union([...]))を合成し、安全に型推論します。

本番APIでの safeParse() による安全な検証

本番エンドポイントでは schema.parse() ではなく schema.safeParse() を使用することで、try/catch例外を発生させずに { success, data/error } の型付き結果分岐を扱えます。

ゼロコストの静的型同期(z.infer)

export type Root = z.infer<typeof RootSchema>; を活用することで、手動でインターフェースを重複定義することなく、コンパイル時の型と実行時検証ルールを完全同期できます。

データ変換・サニタイズの連鎖(Transform)

生成されたスキーマに .trim() や .toLowerCase()、.transform(val => new Date(val)) などのZod変換メソッドを連鎖させることで、バリデーションと同時にデータの正規化を行えます。

よくあるトラブルと解決策

ZodError: APIレスポンス解析時に未認識キーのエラー(unrecognized_keys)が発生する

スキーマの厳格性が .strict() に設定されている可能性があります。外部APIが仕様外の付加フィールドを返す場合は、デフォルトの .strip() を使用して余分なキーを除去するか、.passthrough() で保持してください。

ISO日付文字列がバリデーションエラーになる、またはDateオブジェクトに変換されない

日時文字列はデフォルトで z.string().datetime() として検証されます。JavaScriptの Date インスタンスとして取得したい場合は、型強制モード(z.coerce.date())を有効にするか、.transform((val) => new Date(val)) を追加してください。

空の配列が z.array(z.unknown()) または z.array(z.any()) として出力される

空配列 [] には要素の型を推論するためのサンプル値が存在しません。JSON入力内の配列に代表的なオブジェクトまたはプリミティブのサンプルデータを1件以上含めてください。

よくある質問 (FAQ)

TypeScriptの型定義(interface)とZodスキーマの違いは何ですか?▼

TypeScriptの型定義はコンパイル時に消去され、外部APIから受信する実行時データに対する保護は提供しません。Zodスキーマは実行時(Runtime)にデータを厳格に検証・整形し、同時に z.infer を通じて同一のTypeScript型を安全に抽出できます。

配列内に複数の異なるオブジェクト型が混在している場合はどう処理されますか?▼

ジェネレーターは配列内の全要素を走査し、プロパティの差異や型衝突を検出して z.union([...]) またはオプション項目として正規化されたスキーマを合成します。

入力したJSONデータや生成スキーマが外部サーバーに送信されることはありますか?▼

いいえ、一切ありません。構文木の解析、フォーマット判定、Zodスキーマ生成の全工程はお使いのブラウザ内(ローカルメモリ)で完結し、ネットワーク通信は発生しません。

生成されたZodスキーマをJSON SchemaやOpenAPI仕様に変換できますか?▼

はい、ツール内のJSON Schemaタブで直接エクスポート可能です。またプロジェクト内では zod-to-json-schema や @asteasolutions/zod-to-openapi などのライブラリを併用してOpenAPI仕様へ容易にブリッジできます。

Zod v3 の最新機能(z.coerce や z.string().datetime)に対応していますか?▼

はい。z.string().datetime()、z.coerce、.nullish()、.strict() など、Zod v3 のモダンな記法と z.infer による静的型抽出に完全対応しています。

関連するおすすめ開発ツール

すべてのツール →
SQL DDL から Prisma スキーマへの変換ツール(モデル・リレーション・Enum)開発者ガイドdeveloper

SQLのCREATE TABLE DDL文を高精度に解析し、Prisma ORMのモデル定義、リレーション属性、フィールドマッピング、Enumへと瞬時に変換します。

ツールを開く→
Docker Run to Docker Compose 変換 (CLI to YAML) 開発者ガイドdeveloper

docker run コマンドのオプションフラグ、ボリュームマウント、ポートバインド、環境変数を本番運用可能なクリーンな docker-compose.yml サービス定義へ高精度に自動変換します。

ツールを開く→
Nginx Upstream・ロードバランシング設定ジェネレーター 開発者ガイドdeveloper

ラウンドロビン、least_conn、ip_hash、キープアライブ、パッシブヘルスチェックパラメータを備えた本番環境対応のNginx upstreamブロックを生成します。

ツールを開く→
Cron から Kubernetes CronJob YAML 変換&スペックジェネレーター 開発者ガイドdeveloper

標準的な crontab スケジュール式を、restartPolicy、concurrencyPolicy、リソース制限、タイムゾーン対応を備えた本番仕様の Kubernetes CronJob マニフェストへ瞬時に変換します。

ツールを開く→
JSONからGraphQL SDLスキーマ生成(Types・Queries・Inputs)開発者ガイドdeveloper

JSONオブジェクトからGraphQLスキーマ定義言語(SDL)のオブジェクト型、Input型、Queryスキーマを即時生成します。

ツールを開く→
Prometheus アラートルール&レコーディングルール生成ツール (PromQL) 開発者ガイドdeveloper

PromQLアラートルール、レコーディングルール、アラートしきい値、ラベル、Runbookアノテーションを視覚的に構築・検証します。

ツールを開く→