ข้ามไปยังเนื้อหา

แปลง JSON เป็นสคีมา Zod

สร้างสคีมา Zod จากตัวอย่าง JSON ด้วยไลบรารี json-to-zod แต่ละค่าจะแปลงเป็น z.string(), z.number(), z.boolean(), z.null() หรือ z.object() ที่ซ้อนกัน อาร์เรย์ว่างเป็น z.array(z.unknown())

ร่างตัวตรวจสอบข้อมูลขณะทำงานสำหรับผลตอบกลับ API ที่มีเพียงตัวอย่าง

JSON

Zod Schema

เหมาะกับงานแบบไหน

  • ร่างตัวตรวจสอบข้อมูลขณะทำงานสำหรับผลตอบกลับ API ที่มีเพียงตัวอย่าง
  • เพิ่มการตรวจสอบด้วย Zod ให้ฟอร์มหรือตัวโหลดการตั้งค่าโดยไม่ต้องเขียนสคีมาเอง

วิธีใช้

  1. วางตัวอย่าง JSON ที่เป็นตัวแทนข้อมูลในตัวแก้ไขด้านซ้าย
  2. เปิดการตั้งค่าและกำหนดชื่อสคีมาราก หากต้องการชื่ออื่นแทน schema
  3. คัดลอกโค้ดแล้วเพิ่มข้อกำหนด เช่น .optional(), .email(), .min() และกฎอื่นตามข้อกำหนดจริง

ตัวอย่าง JSON

{
  "id": 42,
  "email": "ada@example.com",
  "roles": ["admin", "editor"],
  "profile": { "nickname": null, "verified": true },
  "tags": []
}

สคีมา 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()),
})

รายละเอียดและข้อจำกัด

สร้างในเบราว์เซอร์และโหลดไลบรารีเมื่อต้องใช้

ชนิดข้อมูลมาจากตัวอย่างเดียว null เป็นเพียง z.null() ไม่ใช่ .nullable() และคีย์ที่ขาดจะไม่ถูกระบุว่าไม่บังคับ

อาร์เรย์ที่สมาชิกมีโครงสร้างต่างกันจะเป็น z.union([...]) ของแต่ละโครงสร้าง ซึ่งอาจต้องรวมด้วยตนเอง

ไม่ตรวจจับรูปแบบอีเมล วันที่ หรือ UUID ทั้งหมดจะเป็น z.string()

FAQ

แปลง JSON ที่รากเป็นอาร์เรย์ได้หรือไม่?

ได้ อาร์เรย์รากจะเป็น z.array(...) หากออบเจ็กต์มีคีย์ต่างกัน ออบเจ็กต์แต่ละแบบจะเป็นสมาชิกของ z.union

กำหนดชนิดข้อมูลให้ null อย่างไร?

เป็น z.null() ซึ่งรับเฉพาะ null หากฟิลด์รับสตริงได้ด้วย ให้เปลี่ยนเป็น z.string().nullable()

เพิ่ม .optional() ให้ฟิลด์ที่ขาดหรือไม่?

ไม่ ทุกคีย์ในตัวอย่างเป็นฟิลด์บังคับ ให้ระบุฟิลด์ที่ไม่บังคับด้วยตนเอง

ข้อกำหนดและแหล่งอ้างอิง