Skip to content

JSON to Zod スキーマコンバーター

JSONを貼り付けるだけで、すぐ使えるZodスキーマを即座に生成。100%ブラウザ内で処理。z.number().int()、.optional()、.nullable()を正しく生成し、z.infer型も付属。無料。

トラッキングなし ブラウザで動作 無料
オプション
0 文字
Zod 出力
0
実際のAPIペイロードに対して、Zod v3とv4の解析セマンティクスに照らして検証済みです。 — Go Tools Team · Jul 2, 2026

Zodスキーマとは?

Zodスキーマは、値の形状をTypeScriptファーストで記述したもので、実行時にデータを検証し、コンパイル時に静的な型を推論します。JSONサンプルから生成すれば、APIレスポンスやフォーム、設定ファイルのために検証のボイラープレートを手書きする必要がなくなります。このZodスキーマジェネレーターは、正しい型を推論し、存在しないキーを.optional()、null値を.nullable()としてマークし、z.infer型を渡します — すべて100%ブラウザ内で行われます。

サンプル

APIレスポンス

{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]}
import { z } from "zod";

export const RootSchema = z.object({
  id: z.number().int(),
  name: z.string(),
  email: z.string(),
  active: z.boolean(),
  roles: z.array(z.string()),
});

export type Root = z.infer<typeof RootSchema>;

典型的なRESTペイロードは、すぐ使えるZodスキーマになります。整数はz.number().int()と推論され、roles配列はz.array(z.string())になります。z.infer型も無料で付いてきます。

ネストオブジェクト

{"repo":"zod","owner":{"login":"colinhacks","id":100}}
import { z } from "zod";

export const OwnerSchema = z.object({
  login: z.string(),
  id: z.number().int(),
});

export const RootSchema = z.object({
  repo: z.string(),
  owner: OwnerSchema,
});

export type Root = z.infer<typeof RootSchema>;

ネストされたオブジェクトは、フィールドから参照される独自の名前付きスキーマ(OwnerSchema)になります。子スキーマはそれを使う親より前に宣言され、同一の形状は一度だけ宣言されて再利用されます。

オブジェクトの配列(オプショナルフィールド)

{"users":[{"id":1,"nick":"x"},{"id":2}]}
import { z } from "zod";

export const UserSchema = z.object({
  id: z.number().int(),
  nick: z.string().optional(),
});

export const RootSchema = z.object({
  users: z.array(UserSchema),
});

export type Root = z.infer<typeof RootSchema>;

オブジェクトの配列は1つの要素スキーマにマージされます。一部の項目に存在しないキーは.optional()になるため、そのキーがなくても解析は成功します。

Nullableフィールドと数値の統一

{"items":[{"sku":"A1","discount":0.1},{"sku":"A2","discount":null}]}
import { z } from "zod";

export const ItemSchema = z.object({
  sku: z.string(),
  discount: z.number().nullable(),
});

export const RootSchema = z.object({
  items: z.array(ItemSchema),
});

export type Root = z.infer<typeof RootSchema>;

一部のサンプルではnullで他のサンプルでは型が付くフィールドは.nullable()になります。0.1には小数点があるため、数値はz.number().int()ではなくz.number()に統一されます。

JSONをZodに変換する方法

  1. 1

    JSONを貼り付ける

    JSONオブジェクト・配列・APIレスポンスを入力欄に入れてください。変換は即座に始まります。

  2. 2

    出力を調整する

    ルートスキーマの名前を変更し、import行、z.infer型、exportキーワードを切り替えて、あなたのプロジェクトのスタイルに合わせてください。

  3. 3

    コピーまたはダウンロード

    生成されたZodスキーマをワンクリックで取得し、検証層にそのまま貼り付けてください。

Common Use Cases

APIレスポンスの検証
サンプルのRESTやGraphQLレスポンスをZodスキーマに変換し、fetch境界で解析することで、不正なデータがアプリに漏れ込む代わりに明確なエラーで即座に失敗します。
型安全なフォームと入力
フォームやクエリ入力のスキーマを生成し、UIとハンドラー全体でz.infer型を再利用して、エンドツーエンドの型安全性を実現します。
tRPCとAIツールのスキーマ
サンプルペイロードから、tRPCプロシージャやAI構造化出力ツールの入力・出力スキーマを手書きせずにブートストラップします。

変換の仕組み

構造推論
各オブジェクトは名前付きスキーマになります。同一の形状は一度だけ宣言されて再利用されます。オブジェクトの配列はキーごとにマージされ、一部の項目に存在しないキーは.optional()になります。
正しい型マッピング
整数はz.number().int()に、小数はz.number()にマッピングされます。文字列・真偽値・nullはそれぞれz.string()・z.boolean()・z.null()にマッピングされ、プリミティブが混在する配列はz.union()になります。
TypeScript型を同梱
ルートスキーマにz.infer型エイリアスが出力されるため、スキーマが唯一の情報源であり続け、型が検証からずれることはありません。
100%クライアントサイド
解析と生成はネットワーク通信なしでブラウザ内で実行されるため、データはプライベートに保たれます。

クリーンなZodスキーマのためのヒント

ルートスキーマに名前を付ける
読みやすく自己文書化されたコードのために、デフォルトのRootではなく、UserやApiResponseのような意味のあるルート名を設定してください。
z.unknown()とユニオンを精緻化する
空または混在した配列はz.unknown()や広範なz.union()を生成します。より充実した代表的なサンプルを貼り付けてツールに正確な型を推論させ、曖昧なまま残るものを絞り込んでください。
境界で検証する
信頼できないデータが入る場所 — APIレスポンス、フォーム入力、Webhook — でsafeParse()を呼び、不正なデータがアプリケーションロジックに届く前に捕捉してください。

よくある質問

JSONをZodスキーマに変換するには?
左側のボックスにJSONを貼り付けてください。コンバーターはブラウザ内で即座に解析し、右側にZodスキーマとz.infer型エイリアスを生成します。「コピー」をクリックして取得できます — アップロードも、アカウントも、待ち時間もありません。
JSON to ZodとJSON Schema to Zodの違いは何ですか?
このツールはサンプルのJSON値 — APIレスポンスやオブジェクト — を受け取り、その形状からZodスキーマを推論します。JSON Schema to Zodは別の作業で、既存のJSON SchemaドキュメントをZodに変換します。生のデータがあるならこのツールを、すでにJSON Schemaファイルがあるならそちらを変換してください。
スキーマからTypeScriptの型を得るには?
すべての結果にz.infer型エイリアスが含まれるため、手書きせずに完全に型付けされたRootが得られます。スキーマを唯一の情報源として保ち、TypeScriptに型を導出させれば、両者がずれることはありません。スキーマだけが欲しい場合は、オプションでz.inferの行をオフにできます。
オプショナルフィールドやnullフィールドはどう扱われますか?
あるキーが一部の配列項目にのみ存在し他には存在しない場合、そのフィールドは.optional()としてマークされます。一部のサンプルでnullで他では型が付くフィールドは.nullable()になります。常にnullだけのフィールドはz.null()になります。Zodはoptionalとnullableを独立して扱うため、スキーマはデータの実際の変化に一致します。
どの数値型を生成しますか?
整数はz.number().int()にマッピングされ、小数点や指数を伴う値はz.number()にマッピングされます。あるフィールドがサンプル間で整数と小数を混在させている場合、z.number()に統一されるため、検証が正当な値を拒否することはありません。
出力はZod 3とZod 4で動作しますか?
はい。生成されるコードは、共通で安定したサブセット — z.object、z.string、z.number、z.array、z.union、.int、.optional、.nullable、z.infer — を使用し、これらはZod 3とZod 4で同じように動作します。プロジェクトにzodパッケージがインストールされていることを確認してください。
生成されたスキーマでデータを検証するには?
スキーマをインポートし、RootSchema.parse(data)を呼ぶと不正な入力で例外を投げます。RootSchema.safeParse(data)を呼ぶと、例外を投げずに型付きの成功またはエラー結果が得られます。これはAPIレスポンス、フォーム入力、環境設定などの信頼境界で理想的です。
配列や混在した型はどう扱われますか?
1つの型の配列は、その型のz.arrayになります。オブジェクトの配列はキーごとに1つの要素スキーマにマージされます。プリミティブ型が混在する配列はz.unionになり、さらに曖昧なものはz.unknownにフォールバックするため、より充実したサンプルから精緻化できます。
私のJSONデータはプライベートで安全ですか?
はい。変換はJavaScriptを使用して100%ブラウザ内で行われます。トークン・ID・顧客データを含むあなたのJSONは、ページから外に出ることも、サーバーに送信されることも一切ありません。
このツールは無料ですか?アカウントは必要ですか?
完全無料で、登録も制限もなく、作業領域を散らかす広告もありません。

Base64エンコーダー&デコーダー

エンコーディングとフォーマット

Base64のデコード・エンコードが無料でオンラインで行えます。リアルタイム変換、UTF-8・絵文字対応。100%ブラウザ上で動作しデータは外部に送信されません。登録不要。

Base64 画像変換ツール

エンコーディングとフォーマット

Base64 文字列やデータURIをブラウザ上で画像に戻します。プレビューし、寸法と MIME を確認して、PNG・JPG・GIF・SVG としてダウンロード。アップロード不要。

CSV to JSON 変換ツール

エンコーディングとフォーマット

CSVをブラウザ内で即座にJSONに変換。RFC 4180・型推論・ヘッダー行・大整数安全対応。100%プライベート、アップロード不要。

.env から JSON への変換ツール

エンコーディングとフォーマット

.env ファイルを貼り付けるだけで即座に JSON に変換。データベースのパスワードや API キー、トークンはブラウザから一切出ません。100% プライベート、アップロード不要、無料の dotenv パーサー。

無料HTMLエンティティデコーダー — HTMLをアンエスケープ

エンコーディングとフォーマット

HTMLエンティティをデコードし、HTMLをオンラインでアンエスケープ。無料・登録不要・100%ブラウザ内処理。名前付き・10進・16進の参照を文字に戻します。アップロードは一切なし。

無料HTMLエンティティエンコーダー — HTMLをエスケープ

エンコーディングとフォーマット

HTMLエンティティをエンコードし、特殊文字(< > & " ')をオンラインでエスケープ。無料・登録不要・100%ブラウザ内処理。名前付き・10進・16進の出力に対応、アップロードは一切なし。