このツールの動作
JSON の標本が Zod のスキーマになります。オブジェクト一つにつき const が一つです。
{ "id": 1, "name": "Ada", "address": { "city": "Paris" } }
import { z } from "zod";
export const AddressSchema = z.object({
city: z.string(),
});
export const RootSchema = z.object({
id: z.int(),
name: z.string(),
address: AddressSchema,
});
子が先に来ます。これらは実行時の定数であり、別のスキーマから名指しされる前に存在している必要があるからです。
数値は書かれたとおりに読む
整数なら z.int()、小数点や指数を伴うものは z.number() です。
{ "price": 10.0, "quantity": 3 }
price: z.number(),
quantity: z.int(),
少し前まで price は z.int() になっていました。10.0 は整数として解析され、字面はどこにも残らなかったからです。そのスキーマは 10.5 を拒みます。おそらく次の一件です。JSON の数値型は一つきりなので、書かれた形が、送り手が何のつもりだったかを示す唯一の証拠です。変換は今それを読みます。この文章を書く過程で見つけ、直しました。
Zod 4 の書き方
z.int() は Zod 4 の書き方です。Zod 3 では z.number().int() と書いてください。この出力で両版が異なるのはそこだけです。
標本があなたの代わりに決められないこと
.optional()はどこにも付きません。 一度見えた鍵は現れうるだけで、いつも現れるかは文書にありません。nullはz.null()になります。 ほかを一切受け付けないスキーマです。「文字列、ときどき無い」なら、.nullable()はあなたが足すものです。- 知らない鍵は取り除かれ、拒まれません。 Zod の既定だからです。
.strict()はあなたの API についての判断です。 - 型の混ざった配列は合併になります。
[1, "a"]はz.array(z.union([z.int(), z.string()]))になり、標本を正確に述べます。実際のデータより広いかもしれません。
いずれも、生成されたスキーマが出発点にすぎない箇所です。この頁はそれを、あなたがレビューで気づく前に述べます。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。