Pengubah JSON ke Skema Zod
Membuat skema Zod dari contoh JSON dengan pustaka json-to-zod. Setiap nilai dipetakan ke z.string(), z.number(), z.boolean(), z.null(), atau z.object() bertingkat; array kosong menjadi z.array(z.unknown()).
Menyusun validator runtime untuk respons API yang hanya tersedia dalam bentuk contoh.
Kapan menggunakannya
- Menyusun validator runtime untuk respons API yang hanya tersedia dalam bentuk contoh.
- Menambahkan validasi Zod ke formulir atau pemuat konfigurasi tanpa menulis skema secara manual.
Cara penggunaan
- Tempelkan contoh JSON yang mewakili data Anda ke editor kiri.
- Buka pengaturan dan atur Nama Skema Akar jika ingin nama selain schema.
- Salin kode, lalu perketat validasinya: tambahkan .optional(), .email(), .min(), dan aturan serupa berdasarkan spesifikasi sebenarnya.
Contoh JSON
{
"id": 42,
"email": "ada@example.com",
"roles": ["admin", "editor"],
"profile": { "nickname": null, "verified": true },
"tags": []
}Skema Zod (TypeScript)
import { z } from "zod"
export const schema = z.object({
id: z.number(),
email: z.string(),
roles: z.array(z.string()),
profile: z.object({ nickname: z.null(), verified: z.boolean() }),
tags: z.array(z.unknown()),
})Detail dan batasan
Pembuatan kode berjalan di browser; pustaka dimuat saat diperlukan.
Tipe berasal dari satu contoh. null hanya menjadi z.null(), bukan .nullable(), dan kunci yang tidak ada tidak pernah ditandai opsional.
Array dengan bentuk elemen berbeda menjadi z.union([...]) dari setiap bentuk, yang mungkin perlu digabungkan secara manual.
Format seperti email, tanggal, atau UUID tidak dideteksi; semuanya menjadi z.string().
FAQ
Bisakah saya mengonversi array JSON pada tingkat akar?
Ya. Array akar menjadi z.array(...). Jika objeknya memiliki kunci berbeda, setiap objek yang berbeda menjadi anggota z.union.
Bagaimana tipe nilai null ditentukan?
Sebagai z.null(), yang hanya menerima null. Jika kolom juga dapat berisi string, ubah menjadi z.string().nullable().
Apakah alat ini menambahkan .optional() untuk kolom yang tidak ada?
Tidak. Setiap kunci dalam contoh wajib ada. Tandai sendiri kolom yang opsional.