開発者 / 種類

JSONからZodスキーマへの変換ツール

JSONサンプルから、ネストしたオブジェクト、配列、オプショナルおよびnull許容フィールド、整数に対応したZodスキーマとTypeScript型を生成します。

JSONからZodスキーマへの変換ツール: サンプル内の各オブジェクトはz.objectスキーマになり、そこから推論した型とともにエクスポートされます。ネストしたオブジェクトには、それぞれ固有の名前付きスキーマが作成されます。配列内のオブジェクトは統合され、一部にしか存在しないキーには.optional()、nullになることがあるキーには.nullable()、整数には.int()が付加されます。生成されたスキーマは、生成元のサンプルをZodで解析して検証済みです。 サーバーへのファイルアップロードは一切なく、100%ブラウザ内でローカル実行します。

カテゴリ
開発者ツール
実行回数
ブラウザ内で
コスト
無料 · 登録不要
提供状況
すぐに使えます
JSONをZodに変換ローカル処理

完全にブラウザ内で実行します

TypeScript

import { z } from "zod";

export const AddressSchema = z.object({
  city: z.string(),
  zip_code: z.string(),
});
export type Address = z.infer<typeof AddressSchema>;

export const UserSchema = z.object({
  id: z.number().int(),
  user_name: z.string(),
  avatar_url: z.string(),
  score: z.number(),
  tags: z.array(z.string()),
  address: AddressSchema,
  manager_id: z.number().int().nullable(),
  nickname: z.string().optional(),
});
export type User = z.infer<typeof UserSchema>;

export const UserListSchema = z.array(UserSchema);

各オブジェクトにスキーマと推論された型が付与されます。一部のオブジェクトにないキーには.optional()、nullになることがあるキーには.nullable()、整数には.int()が付与されます。APIで保証されないルールは緩めてください。

スキーマを使用する

Schema.parse(data)を呼び出すとデータを検証し、不正なデータの場合は例外を発生させます。Schema.safeParse(data)を使うと、tryとcatchを使わずに確認できる結果を取得できます。z.inferからエクスポートされる型は、スキーマを編集しても常にスキーマと一致します。

コンパイル時の型だけが必要な場合は、JSON to TypeScriptで通常のインターフェースを作成できます。既存のJSON Schemaに対して検証するには、JSON Schema validatorを使用してください。

生成されたルールを厳密にする

サンプルからわかるのは、サンプルに含まれている内容だけです。そのため、スキーマは出発点として扱ってください。該当する文字列には.email()、.url()、.datetime()を追加し、値が固定されたフィールドにはz.enum([...])を使い、データに上限や下限がある場合は.min()または.max()を追加します。

使い方

  1. JSONサンプルを貼り付けます。いくつかの典型的なレコードを含む配列がおすすめです。
  2. トップレベルの型に名前を付けます。
  3. 生成されたスキーマをコピーし、実行時のデータ検証に使用します。

プライバシーと制限事項

JSONはブラウザ内で変換され、アップロードされることはありません。

関連ツール

よくある質問

TypeScriptのインターフェースではなくZodを使う理由は何ですか?

インターフェースはコードのコンパイル時に消えるため、実行時にデータを検証できません。Zodスキーマならデータを検証でき、z.inferで同じ型も取得できます。

整数には本当に.int()を付けるべきですか?

APIが整数を返すことを保証している場合に限ります。価格やスコアに小数が含まれる可能性があるなら、サンプルが整数だけでも.int()を削除してください。

日付やメールアドレスのような文字列にも対応していますか?

文字列はz.string()として型付けされます。データに応じて、.email()、.url()、日付チェックなどの追加の検証を設定してください。

無料ツール · ブラウザ内で · アカウント不要