JSONからZodスキーマ生成ツール(TypeScriptランタイム検証)開発者ガイド
生のJSONデータからTypeScript Zodスキーマ、型定義、ネストされたバリデーションルールをブラウザ上で自動推論・生成します。
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>;100% クライアントサイド構文解析
JSONの構文解析とZodスキーマの合成はすべてブラウザのローカルメモリ内で完結し、外部サーバーへの通信は一切行われません。
TypeScriptとZod v3の完全統合
ネストされたz.object()やz.array()、共用体(Union)、z.inferによる静的型抽出コードをワンクリックで生成します。
スマートな形式判定と型強制
UUID、メールアドレス、ISO日時文字列、URLなどを自動検出し、厳格なランタイムバリデーションルールを策定します。