機能の説明
JSON から Zod のバリデーションスキーマを生成します。スカラーはそれぞれのバリデーターに対応し(z.string、z.number、z.boolean、z.null)、オブジェクトはインラインの z.object({...}) として再帰し、配列は z.array(...) になります - そして型が混在する配列は、要素型ごとの z.union([...]) になります。出力は、Zod をランタイムバリデーションに使う TypeScript プロジェクトにそのままドロップできます: API レスポンス、設定ファイル、フォームペイロード、フィクスチャ。100% クライアント側で動作します。
使い方
- JSON を JSON ボックスに貼り付けます(サンプルが最初から入っています - Sample で復元、Clear で空にします)。
- 必要に応じて Root name を設定します(デフォルトは
Root。const Root = ...バインディングに使われます)。 - スキーマは右側にリアルタイムで表示され、入力をスクロールしても追従します。
- Copy でコピーするか、
schema.tsとして Download します。
例
フラットなオブジェクト — {"id":1,"name":"Ada","active":true,"tags":["a","b"]} →
const Root = z.object({
id: z.number(),
name: z.string(),
active: z.boolean(),
tags: z.array(z.string()),
});
ネストしたオブジェクトはインラインで再帰 — {"user":{"name":"Ada"}} →
const Root = z.object({
user: z.object({
name: z.string(),
}),
});
混在配列は union の配列になる — {"xs":[1,"a"]} →
const Root = z.object({
xs: z.array(z.union([
z.number(),
z.string(),
])),
});
エッジケース — 空の配列は z.array(z.unknown()) になり、null は z.null() に対応し、パーサーが拒否したものはスキーマの代わりにエラーボックスに表示されます。
補足事項
- プライベート: パースはローカルで行われるため、機密性の高いペイロードにも安全です。
- 生成されたスキーマは出発点です。実際のデータにサンプルでは見えない制約があれば、
.min()/.max()のリファインメントを追加してください。 - 関連ツール: JSON to TypeScript、JSON Validator。