Skip to content

Konverter JSON ke Skema Zod

Tempel JSON, dapatkan skema Zod siap pakai seketika, 100% di browser Anda. z.number().int(), .optional() dan .nullable() yang benar, plus tipe z.infer. Gratis.

Tanpa Pelacakan Berjalan di Browser Gratis
Opsi
0 karakter
Output Zod
0 baris
Output diverifikasi terhadap semantik parsing Zod v3 dan v4 untuk payload API dunia nyata. — Go Tools Team · Jul 2, 2026

Apa itu skema Zod?

Skema Zod adalah deskripsi bentuk sebuah nilai yang mengutamakan TypeScript, yang memvalidasi data saat runtime dan menyimpulkan tipe statis saat kompilasi. Membuatnya dari sampel JSON berarti Anda tak pernah menulis tangan boilerplate validasi untuk respons API, formulir, atau file konfigurasi. Generator skema Zod ini menyimpulkan tipe yang benar, menandai kunci yang absen sebagai .optional(), nilai null sebagai .nullable(), dan memberi Anda tipe z.infer — semuanya 100% di browser Anda.

Contoh

Respons 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>;

Payload REST yang khas menjadi skema Zod siap pakai. Bilangan bulat disimpulkan z.number().int(), dan array roles menjadi z.array(z.string()). Tipe z.infer disertakan gratis.

Objek bertingkat

{"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>;

Objek bertingkat menjadi skema bernama tersendiri (OwnerSchema) yang direferensikan per field. Skema anak dideklarasikan sebelum induk yang memakainya, dan bentuk yang identik dideklarasikan sekali lalu dipakai ulang.

Array objek (field opsional)

{"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>;

Array objek digabung menjadi satu skema elemen. Kunci yang hilang dari sebagian item menjadi .optional(), sehingga parsing tetap berhasil saat kunci itu absen.

Field nullable dan unifikasi angka

{"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>;

Field yang null di sebagian sampel tetapi bertipe di sampel lain menjadi .nullable(). Karena 0.1 memiliki titik desimal, angkanya diseragamkan menjadi z.number() alih-alih z.number().int().

Cara mengonversi JSON ke Zod

  1. 1

    Tempel JSON Anda

    Masukkan objek JSON, array, atau respons API ke kolom input. Konversi dimulai seketika.

  2. 2

    Setel output

    Ganti nama skema root dan aktifkan atau nonaktifkan baris import, tipe z.infer, atau kata kunci export agar sesuai gaya proyek Anda.

  3. 3

    Salin atau unduh

    Ambil skema Zod yang dihasilkan dengan satu klik dan tempel langsung ke lapisan validasi Anda.

Common Use Cases

Validasi respons API
Ubah sampel respons REST atau GraphQL menjadi skema Zod dan parsing di batas fetch, agar data yang cacat gagal cepat dengan error yang jelas alih-alih bocor ke seluruh aplikasi Anda.
Formulir dan input yang aman-tipe
Hasilkan skema untuk input formulir atau kueri dan pakai ulang tipe z.infer di seluruh UI dan handler Anda untuk keamanan tipe menyeluruh.
Skema tRPC dan alat AI
Bootstrap skema input dan output untuk prosedur tRPC atau alat keluaran-terstruktur AI dari contoh payload alih-alih menulisnya dengan tangan.

Cara kerja konversi

Inferensi struktural
Setiap objek menjadi skema bernama; bentuk yang identik dideklarasikan sekali lalu dipakai ulang. Array objek digabung kunci demi kunci, dan kunci yang absen dari sebagian item menjadi .optional().
Pemetaan tipe yang benar
Bilangan bulat dipetakan ke z.number().int() dan desimal ke z.number(). String, boolean, dan null dipetakan ke z.string(), z.boolean(), dan z.null(); array primitif campuran menjadi z.union().
Tipe TypeScript disertakan
Alias tipe z.infer dikeluarkan untuk skema root, sehingga skema tetap menjadi satu sumber kebenaran dan tipe Anda tak pernah menyimpang dari validasi Anda.
100% sisi klien
Parsing dan pembuatan berjalan di browser Anda tanpa panggilan jaringan, sehingga data Anda tetap privat.

Tips untuk skema Zod yang rapi

Beri nama skema root Anda
Tetapkan nama root yang bermakna seperti User atau ApiResponse alih-alih Root bawaan agar kode mudah dibaca dan mendokumentasikan dirinya sendiri.
Perhalus z.unknown() dan union
Array kosong atau campuran menghasilkan z.unknown() atau z.union() yang luas. Tempel sampel yang lebih kaya dan representatif agar alat menyimpulkan tipe yang presisi, lalu perketat apa pun yang masih ambigu.
Validasi di batas
Panggil safeParse() tempat data tak tepercaya masuk — respons API, input formulir, webhook — agar data buruk tertangkap sebelum mencapai logika aplikasi Anda.

Pertanyaan yang sering diajukan

Bagaimana cara mengonversi JSON menjadi skema Zod?
Tempel JSON Anda ke kotak di sebelah kiri. Konverter mem-parsingnya seketika di browser Anda dan menghasilkan skema Zod di sebelah kanan, beserta alias tipe z.infer. Klik Salin untuk mengambilnya — tanpa unggah, tanpa akun, tanpa menunggu.
Apa bedanya JSON ke Zod dengan JSON Schema ke Zod?
Alat ini mengambil sampel nilai JSON — respons API atau objek — dan menyimpulkan skema Zod dari bentuknya. JSON Schema ke Zod adalah tugas berbeda: ia mengonversi dokumen JSON Schema yang sudah ada menjadi Zod. Jika Anda punya data mentah, pakai alat ini. Jika Anda sudah punya file JSON Schema, konversikan itu.
Bagaimana cara mendapatkan tipe TypeScript dari skema?
Setiap hasil menyertakan alias tipe z.infer, jadi Anda mendapat Root yang bertipe penuh tanpa menulisnya dengan tangan. Jadikan skema sebagai satu sumber kebenaran dan biarkan TypeScript menurunkan tipenya, agar keduanya tak pernah menyimpang. Anda bisa mematikan baris z.infer di Opsi jika hanya menginginkan skemanya.
Bagaimana field opsional dan null ditangani?
Ketika sebuah kunci muncul di sebagian item array tetapi tidak di item lain, field-nya ditandai .optional(). Field yang null di sebagian sampel dan bertipe di sampel lain menjadi .nullable(). Field yang selalu hanya null menjadi z.null(). Zod memperlakukan optional dan nullable secara terpisah, sehingga skema cocok dengan bagaimana data Anda sebenarnya bervariasi.
Tipe angka apa yang dihasilkan?
Bilangan bulat dipetakan ke z.number().int(); nilai apa pun yang ditulis dengan titik desimal atau eksponen dipetakan ke z.number(). Jika sebuah field mencampur bilangan bulat dan desimal antar sampel, ia diseragamkan menjadi z.number() agar validasi tak pernah menolak nilai yang sah.
Apakah output berfungsi dengan Zod 3 dan Zod 4?
Ya. Kode yang dihasilkan memakai subset umum yang stabil — z.object, z.string, z.number, z.array, z.union, .int, .optional, .nullable, dan z.infer — yang berperilaku sama di Zod 3 dan Zod 4. Pastikan saja paket zod terpasang di proyek Anda.
Bagaimana cara memvalidasi data dengan skema yang dihasilkan?
Impor skema dan panggil RootSchema.parse(data) untuk melempar error pada input yang tidak valid, atau RootSchema.safeParse(data) untuk mendapatkan hasil sukses atau error bertipe tanpa melempar. Ini ideal di batas kepercayaan seperti respons API, input formulir, dan konfigurasi environment.
Bagaimana array dan tipe campuran ditangani?
Array satu tipe menjadi z.array dari tipe itu. Array objek digabung kunci demi kunci menjadi satu skema elemen. Array yang mencampur tipe primitif menjadi z.union, dan apa pun yang lebih ambigu jatuh ke z.unknown sehingga Anda bisa memperhalusnya dari sampel yang lebih kaya.
Apakah data JSON saya privat dan aman?
Ya. Konversi berjalan 100% di browser Anda dengan JavaScript. JSON Anda — termasuk token, ID, atau data pelanggan — tidak pernah meninggalkan halaman dan tidak pernah dikirim ke server.
Apakah alat ini gratis? Apakah saya perlu akun?
Sepenuhnya gratis tanpa pendaftaran, tanpa batas, dan tanpa iklan yang memenuhi ruang kerja.