本文へスキップ
スキーマ変換

JSON Schema ⇄ Zod 変換

JSON SchemaからZodスキーマを生成し、逆にZodのコードからJSON Schemaを書き出せる双方向の変換ツールです。requiredと.optional()、enum、union、ネストしたオブジェクト、文字列のformatや長さ制約を相互に対応付けます。変換できなかった箇所は警告として表示されます。処理はすべてブラウザ内で完結し、入力したスキーマは送信されません。

ガイド: 使い方・特徴

  • 「JSON Schema → Zod」を選んでJSON Schemaを貼り付けると、`z.object({ ... })` 形式のZodスキーマと `z.infer` による型エイリアスが生成されます。
  • 「Zod → JSON Schema」を選ぶと逆方向に変換します。`import` 行や `export const user =` が付いたままでも、`z.` から始まる式を取り出して解釈します。
  • `required` に入っていないプロパティには `.optional()` が付き、逆方向では `.optional()` の無いプロパティが `required` に入ります。
  • `format: "email"` は `.email()`、`minLength` は `.min()` のように、文字列のformatと長さ制約も相互に対応付けます。
  • `$ref` や `allOf` など変換しきれない記述があった場合は、出力の下に警告として表示されます(黙って壊れた結果を返しません)。

FAQ: よくある質問

  • JSONサンプルからZodを作る「JSON to Zod」とは何が違いますか?

    入力が違います。JSON to ZodはAPIレスポンスなどの「値のサンプル」から型を推測するツールで、必須かどうかや文字列のformatは分かりません。こちらは「JSON Schema」そのものを入力とするため、requiredやenum、minLength、format:emailといった制約情報がそのままZodのチェーン(.optional() / .enum() / .min() / .email())に反映されます。手元にOpenAPIやJSON Schemaの定義がある場合はこちらが正確です。
  • requiredと.optional()はどう対応しますか?

    JSON Schemaでは「requiredの配列に列挙されていれば必須」ですが、Zodでは「.optional()が付いていなければ必須」で、既定値が逆になっています。この変換ではその違いを吸収し、JSON Schema→Zodではrequiredに無いプロパティへ.optional()を付け、Zod→JSON Schemaでは.optional()の無いプロパティをrequired配列に集めます。
  • $refを使ったスキーマは変換できますか?

    $refの参照先は展開せず、その位置はz.any()になり警告を表示します。共通定義を$defsに切り出しているスキーマは、参照先を手元で展開してから貼り付けるか、生成後にその部分だけ手で書き換えてください。allOfも交差型として表現できないため、先頭のスキーマのみを変換して警告を出します。
  • 生成したZodをそのまま本番のバリデーションに使えますか?

    スキーマの骨組みとしては使えますが、業務ルール(メールドメインの制限、値どうしの整合性など)は元のJSON Schemaに書かれていない限り生成されません。またz.string().regex()に変換されるpatternは、JSON SchemaがECMAScript互換でない正規表現を使っている場合に挙動が変わることがあります。生成後に必ず内容を確認してください。

使いどころ: 主な活用シーン

  • OpenAPI定義からフロントの型と検証を起こす

    OpenAPIのcomponents.schemasはJSON Schemaなので、そのまま貼り付ければZodスキーマとz.inferによる型が同時に手に入ります。サーバーの定義とフロントの検証がずれるのを防げます。

  • 既存のZodスキーマをAPI仕様として書き出す

    コード側で先にZodスキーマを書いている場合、逆方向の変換でJSON Schemaを生成し、OpenAPIのcomponentsやドキュメントに貼り付けられます。

  • 手書きのバリデーションをスキーマ駆動に移行する

    if文で書かれた検証を置き換えるとき、JSON Schemaがあれば出発点のZodスキーマを一気に生成できます。requiredやenumの取りこぼしが減ります。

  • AIが生成したJSON Schemaを実際に使える形にする

    LLMに書かせたJSON Schemaをそのまま貼り付けて、TypeScriptで動くZodスキーマに変換し、型と実行時検証の両方を得られます。

注意点: 注意事項・制限

  • $ref・allOf・条件分岐は展開されません

    $refは参照先を解決せずz.any()になり、allOfは先頭のスキーマのみを変換します。if/then/elseやnotも非対応です。いずれも変換結果の下に警告として表示されるので、該当箇所は手で補ってください。

  • Zod→JSON Schemaは文字列としてコードを解析します

    ブラウザ内で完結させるためコードを実行せず、テキストとして解析しています。z.object / z.array / z.union / z.enum / z.literal / z.record と主要なメソッドチェーンには対応していますが、変数に切り出したスキーマの参照や、.refine() のような任意の関数はJSON Schemaに表現できないため無視されます。

  • patternの正規表現はそのまま移されます

    JSON Schemaのpatternはz.string().regex()に、逆方向ではその中身がpatternに入ります。JSON SchemaはECMAScript互換でない正規表現も許容するため、そのまま持ち込むと挙動が変わる場合があります。

  • 生成結果は必ずレビューしてください

    このツールは移行のたたき台を作るためのものです。業務ルールや値どうしの整合性チェックは元のスキーマに書かれていない限り生成されません。本番のバリデーションに使う前に内容を確認してください。

おすすめリソース

このセクションにはアフィリエイトリンクが含まれる場合があります。リンク経由で購入すると、追加費用なしでDevToolKits.appが紹介料を受け取ることがあります。

このツールの関連記事

最新記事

ツール紹介
2026-08-06

JSON SchemaとZodを相互変換する仕組み|requiredと.optional()の対応

JSON SchemaからZodスキーマを生成し、Zodのコードから逆にJSON Schemaを書き出す双方向変換ツールの実装を解説。requiredと.optional()で既定値が逆転している問題、formatや制約の対応表、コードを実行せずに解析する方法まで整理します。

活用事例
2026-08-06

SQLの句の評価順リファレンス|WHEREでSELECTの別名が使えない理由

SQLは書いた順に実行されません。論理的な評価順(FROM→WHERE→GROUP BY→HAVING→SELECT→ORDER BY→LIMIT)を軸に、別名がWHEREで使えない理由、WHEREとHAVINGの使い分け、ONLY_FULL_GROUP_BY、COUNT(*)とCOUNT(列)の差、LEFT JOIN+WHEREの罠を実例で整理します。

活用事例
2026-08-06

unified diff形式の読み方リファレンス|@@ の数字とgit diffの出力

git diffが出力するunified diff形式の読み方を整理。@@ -12,7 +12,9 @@ の4つの数字の意味、コンテキスト行、空白だけの変更が行全体の置換に見える理由、\ No newline at end of file、マージ時の @@@、リネーム検出の similarity index までを実例で解説します。

活用事例
2026-08-06

UTC⇄JST変換リファレンス|時差9時間の早見表とタイムゾーン事故の防ぎ方

UTCとJSTの変換を早見表で整理。ISO 8601のZと+09:00の意味、JavaScriptの日付パースでズレる条件、MySQL/PostgreSQLのタイムゾーン挙動、GitHub ActionsのcronがUTCで動く罠まで実例付きで解説します。

活用事例
2026-08-04

CREATE TABLE リファレンス|MySQL・PostgreSQL・SQLiteの型と制約の違い

CREATE TABLE文(DDL)の書き方を3データベース横断の早見表で整理。型対応表、自動採番(AUTO_INCREMENT / IDENTITY / rowid)の方言差、外部キーのON DELETE挙動、CHECK制約が無視される罠まで実例付きで解説します。

ツール紹介
2026-08-03

テーブル設計からCREATE TABLE文を自動生成する仕組み|DDLビルダー

テーブルをビジュアルに設計してCREATE TABLE文とER図を生成するDDLビルダーの実装を解説。MySQL/PostgreSQL/SQLiteの型変換ルール、JSONサンプルからのカラム推論アルゴリズムまで実例付きで整理します。

広告

広告