Trình tạo JSON Schema
Dán một hoặc nhiều mẫu JSON, trình tạo sẽ suy luận ra một JSON Schema mà bạn có thể dùng để xác thực các payload mới. Công cụ phát hiện kiểu, đánh dấu trường là bắt buộc khi trường đó xuất hiện trong mọi mẫu, suy luận enum khi giá trị lấy từ một tập đóng nhỏ, và tạo ra kết quả tuân thủ JSON Schema draft 2020-12.
Cách tạo JSON Schema
-
1
Dán tài liệu mẫu
Một hoặc nhiều payload thực tế; càng đa dạng thì schema được suy luận càng chính xác.
-
2
Chọn draft
draft 2020-12 (hiện hành), draft 07 (được hỗ trợ rộng rãi) hoặc draft 04 (cho OpenAPI cũ).
-
3
Điều chỉnh suy luận
Bật/tắt suy luận enum, chiến lược trường bắt buộc (giao hoặc hợp), và có đánh dấu tất cả trường là `required` hay không khi chỉ cung cấp một mẫu.
-
4
Tạo
Schema được xuất ra cùng với `$schema`, `title`, `type`, `properties`, và `$ref` lồng nhau cho các đối tượng con lặp lại.
Những gì suy luận làm tốt
- Kiểu: string, number, integer, boolean, null, array, object.
- Khả năng nhận giá trị null: một trường có giá trị
nulltrong một mẫu và là chuỗi trong mẫu khác sẽ trở thành["string", "null"]. - Phần tử mảng: mảng đồng nhất tạo ra một schema
itemsduy nhất; mảng không đồng nhất tạo raprefixItems. - Enum: nếu tất cả các giá trị quan sát được đều thuộc một tập nhỏ (có thể cấu hình, mặc định 10 giá trị khác nhau), hệ thống sẽ xuất ra
enum. - Bắt buộc: với nhiều mẫu, giao của các khóa trở thành
required; với một mẫu, tất cả các khóa đều bắt buộc trừ khi bạn chọn bỏ qua. - Định dạng: các chuỗi khớp với ngày ISO-8601, email hoặc URI sẽ được suy luận
format.
Những gì suy luận không thể biết
- Ý định so với ví dụ: mẫu
age: 25suy luận ratype: integer, nhưng không thể biết rằng bạn cũng chấp nhậnnull. Hãy cung cấp nhiều mẫu bao quát các trường hợp biên. - Ràng buộc:
minLength,maximum,pattern, bạn phải tự thêm chúng. Suy luận không đoán giới hạn từ mẫu. - Logic nghiệp vụ: “chỉ đúng một trong ba trường này được thiết lập” cần dùng
oneOf, không thể suy luận. - Tham chiếu: trình tạo xuất ra một schema phẳng. Nếu bạn muốn tách các cấu trúc lặp lại vào
$defs, hãy làm việc đó sau khi tạo.
Ví dụ đầu ra
Từ một mẫu duy nhất:
{ "name": "Alice", "age": 30, "tags": ["admin", "user"] }
Schema được suy luận (draft 2020-12):
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer" },
"tags": { "type": "array", "items": { "type": "string" } }
},
"required": ["name", "age", "tags"]
}
Các lỗi thường gặp
- Suy luận từ một mẫu duy nhất. Schema sẽ bị overfit, mọi trường đều trở nên bắt buộc, không chấp nhận null. Luôn cung cấp ít nhất 5–10 mẫu đa dạng.
- Dùng
integertrong khi bạn muốnnumber. Nếu bất kỳ mẫu nào có số thập phân, kiểu được suy luận sẽ lànumber; nếu tất cả đều là số nguyên, kiểu sẽ làinteger. Với các trường có thể thuộc cả hai kiểu, hãy đưa vào một mẫu có số thập phân. - Quên các trường tùy chọn. Một trường xuất hiện trong 4 trên 5 mẫu nhưng thiếu ở 1 mẫu sẽ trở thành tùy chọn, đúng như dự định. Nếu cả 5 mẫu tình cờ đều có trường đó, schema sẽ đánh dấu nó là bắt buộc dù thực tế nó chỉ là tùy chọn trong API của bạn.
Câu hỏi thường gặp
Càng nhiều càng tốt, nhưng thường 5–10 mẫu đa dạng là đủ để tạo ra một schema hợp lý. Với một mẫu duy nhất, mọi trường đều trở nên bắt buộc và không thể suy luận khả năng nhận giá trị null, vì vậy hãy luôn cung cấp nhiều biến thể nếu có thể.
Mặc định là draft 2020-12. draft 07 và 04 có sẵn để tương thích với OpenAPI 3.0 (vốn dùng một tập con của draft 05/07).
Không. Suy luận ràng buộc từ mẫu sẽ khiến schema bị overfit. Hãy thêm minLength, maximum, pattern v.v. một cách thủ công sau khi tạo, dựa trên các quy tắc nghiệp vụ của bạn.
Có. Nếu bạn dán một mảng JSON, trình tạo sẽ xem mỗi phần tử là một mẫu riêng và tạo ra một schema mô tả từng phần tử, không phải mảng bên ngoài. Hãy bật tùy chọn “xử lý như vùng chứa mảng” nếu bạn muốn lấy hình dạng của chính mảng bên ngoài.
Công cụ liên quan
Bảng tham chiếu ASCII
Bảng ASCII đầy đủ từ 0 đến 127 với giá trị thập phân, thập lục phân, bát phân, nhị phân và ký hiệu tham chiếu ký tự số HTML, gồm NUL, LF và DEL.
Tham chiếu ký tự HTML
Danh sách có thể tìm kiếm các thực thể HTML, mã tên và mã số tương ứng của chúng, cùng chức năng sao chép chỉ với một cú nhấp cho các ký tự đặc biệt và biểu tượng.
Bảng tham khảo phím tắt
Tìm phím tắt mặc định theo tài liệu của VS Code, Chrome và Bash dùng GNU Readline trên macOS, Windows và Linux.
Bảng tra cứu nhanh Markdown
Tài liệu Markdown thực dụng với bản xem trước thực tế và ví dụ có thể sao chép cho tiêu đề, danh sách, bảng, mã, liên kết, hình ảnh và cú pháp GFM.
Trình định dạng HTML
Định dạng HTML cục bộ trong trình duyệt với thụt lề hai hoặc bốn khoảng trắng. HTML không được tải lên hoặc xác thực.
Công cụ đổi PX sang PT
Đổi giá trị pixel CSS không âm sang điểm chữ theo công thức 1 px = 0,75 pt. Kết quả hiển thị tối đa bốn chữ số thập phân.
Công cụ này có phiên bản bằng các ngôn ngữ khác
- Generator JSON Schema [ID]
- JSONスキーマジェネレーター [JA]
- เครื่องมือสร้าง JSON Schema [TH]
- JSON-Schema-Generator [DE]
- JSON 스키마 생성기 [KO]
- Generator schematów JSON [PL]
- Gerador de Esquema JSON [PT]
- Generador de Esquema JSON [ES]
- JSON-schemagenerator [SV]
- مولّد مخطط JSON [AR]
- Générateur de schéma JSON [FR]
- JSON-schemagenerator [NL]
- Генератор JSON-схем [RU]
- JSON Şema Oluşturucu [TR]
- JSON 模式生成器 [ZH]
- JSON Schema Generator [EN]
- Generatore di JSON Schema [IT]