Chuyển JSON sang TypeScript, Zod, Go, Python online

Sinh interface TypeScript, schema Zod, JSON Schema 2020-12, struct Go, dataclass Python hoặc model Pydantic từ một hay nhiều mẫu JSON.

Công cụ miễn phí: 20 request mỗi phút.

Kết quả

Bấm “Chạy” để xem kết quả.

Dán mẫu JSON vào json (hoặc nhiều mẫu trong samples) và chọn lang: typescript, zod, json-schema, go, python (dataclass), pydantic (v2), danh sách cách nhau bằng dấu phẩy hoặc all. Các mẫu được gộp theo từng trường: trường thiếu ở một số object trở thành tuỳ chọn, nhiều kiểu khác nhau thành union, null khiến trường có thể null, số nguyên và số thập phân gộp thành number; mảng object ở cấp ngoài cùng được hiểu là danh sách bản ghi cùng một kiểu.

Object lồng nhau có kiểu riêng đặt theo tên khoá (phần tử mảng được đổi sang số ít: items → Item, addresses → Address), các object cùng cấu trúc dùng chung một kiểu, chuỗi được gắn định dạng khi mọi mẫu đều khớp: date-time RFC 3339 (→ time.Time, datetime, z.string().datetime()), ngày, giờ, UUID, e-mail, URL. Với enums=true, trường chuỗi ngắn có giá trị lặp lại thành union literal / enum. Khoá không hợp lệ làm tên biến được đặt trong ngoặc kép (TypeScript, Zod), gắn tag (Go json:"…") hoặc alias (Pydantic Field(alias=…)).

Bộ sinh mã do chúng tôi tự viết (không dùng quicktype): tối đa 100 mẫu, 200.000 giá trị và 64 cấp lồng nhau. code chứa ngôn ngữ đầu tiên, output chứa mọi ngôn ngữ đã chọn. Mã Python dùng cú pháp X | None (Python 3.10 trở lên).

Dùng trong code của bạn

curl -X POST "https://apibox.io.vn/v1/json-to-types" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"json":{"id":1,"name":"An","created_at":"2026-11-10T08:30:00Z","tags":["vip"],"address":{"city":"Hà Nội","zip":null}},"lang":"typescript","name":"Customer"}'

Tài liệu API → Nhận API key miễn phí

Hỏi đáp

Làm sao để đánh dấu trường tuỳ chọn?

Gửi nhiều mẫu trong "samples": trường vắng mặt ở một số mẫu sẽ thành tuỳ chọn (?, .optional(), con trỏ + omitempty, = None).

Mã Zod dùng phiên bản nào?

Cú pháp Zod 3 (z.string().datetime(), .email(), .uuid()), vẫn chạy được trên Zod 4.

Ngày giờ có được nhận diện không?

Có, với chuỗi là date-time RFC 3339 hoặc ngày YYYY-MM-DD ở mọi mẫu; đặt detect_dates=false để giữ là chuỗi thường.