UTILS.
100% trong trình duyệt
🛡️

JSON sang Zod Schema

Dán một giá trị JSON mẫu và tạo ra một Zod schema cùng kiểu TypeScript được suy luận, để một hình dạng vừa kiểm tra lúc chạy vừa xác định kiểu lúc biên dịch.

đầu ra

Về công cụ này

Công cụ JSON sang Zod Schema biến một JSON mẫu được dán vào thành một Zod schema sẵn sàng dùng và kiểu TypeScript tương ứng. Zod là thư viện kiểm tra dữ liệu phổ biến nhất của TypeScript, và việc tự viết tay các cây z.object cho payload API thực tế vừa chậm vừa dễ sai. Bộ chuyển đổi này phân tích JSON của bạn bằng JSON.parse, duyệt giá trị đệ quy, và phát ra Zod đúng chuẩn: chuỗi trở thành z.string(), số nguyên z.number().int(), các số khác z.number(), boolean z.boolean(), null z.null(), và các đối tượng lồng nhau có schema z.object({...}) được đặt tên riêng.

Mọi thứ chạy cục bộ trong trình duyệt của bạn — JSON được phân tích ngay trong trang và không bao giờ được tải lên, nên các payload nhạy cảm luôn ở trên thiết bị của bạn. Mảng suy luận kiểu phần tử bằng cách hợp nhất sâu mọi phần tử, nên một mảng các đối tượng có khóa hơi khác nhau sẽ tạo ra một schema duy nhất trong đó các khóa thiếu ở một số phần tử được đánh dấu .optional(). Các chuỗi ngày-giờ ISO-8601 được nhận diện và phát ra dưới dạng z.string().datetime(). Các khóa đối tượng không phải là định danh hợp lệ được đặt trong dấu ngoặc kép một cách an toàn.

Kết quả là một module hoàn chỉnh: một const được export cho mỗi schema đối tượng (các con được định nghĩa trước các cha tham chiếu đến chúng) theo sau bởi export type Root = z.infer<typeof Root>, nên bạn có được kiểu lúc biên dịch miễn phí. Dùng ô tên gốc để đổi tên schema cấp cao nhất, và công tắc khóa-thiếu để coi các khóa vắng mặt là .optional() (mặc định) hoặc .nullable(). Sao chép kết quả hoặc tải xuống dưới dạng tệp .ts.

Câu hỏi thường gặp

Các kiểu JSON được ánh xạ sang Zod như thế nào?
string sang z.string(), một chuỗi ngày-giờ ISO sang z.string().datetime(), số nguyên sang z.number().int(), các số khác sang z.number(), boolean sang z.boolean(), null sang z.null(), mảng sang z.array(...), và đối tượng sang một z.object({...}) được đặt tên. Mảng rỗng trở thành z.array(z.unknown()).
Các trường tùy chọn hoặc nullable được xử lý như thế nào?
Khi các phần tử của một mảng hoặc các anh em đã hợp nhất thiếu một khóa, khóa đó được đánh dấu .optional(). Một giá trị được thấy là null trở thành z.null() hoặc thêm .nullable(). Công tắc khóa-thiếu cho phép bạn phát ra .optional() (mặc định) hoặc .nullable() cho các khóa vắng mặt ở một số mẫu.
Nó có cho tôi luôn một kiểu TypeScript không?
Có. Sau schema, nó phát ra export type Root = z.infer<typeof Root>, nên kiểu tĩnh được suy luận bắt nguồn từ chính schema — một nguồn sự thật duy nhất cho cả kiểm tra lúc chạy lẫn kiểu lúc biên dịch.
JSON của tôi có được tải lên đâu không?
Không. Việc phân tích và sinh mã diễn ra hoàn toàn trong trình duyệt của bạn với JSON.parse và JavaScript thuần. Không có gì được gửi tới máy chủ, nên bạn có thể dán các phản hồi API riêng tư một cách an toàn.

Công cụ khác