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.
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"}'const res = await fetch('https://apibox.io.vn/v1/json-to-types', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"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"
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/json-to-types",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"json": {"id": 1, "name": "An", "created_at": "2026-11-10T08:30:00Z", "tags": ["vip"], "address": {"city": "Hà Nội", "zip": None}}, "lang": "typescript", "name": "Customer"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/json-to-types');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"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"}',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));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.