Công cụ này làm gì
JSON Schema là bộ từ vựng mô tả hình dạng của dữ liệu JSON: đối tượng phải có những thuộc tính nào, mỗi giá trị thuộc kiểu gì, khoảng và mẫu cho phép, độ dài mảng và nhiều hơn nữa. Các API dùng nó trong đặc tả OpenAPI, trình soạn thảo dùng để gợi ý tự động trong tệp cấu hình, và back-end dùng để từ chối các yêu cầu sai.
Công cụ này kiểm tra tài liệu JSON theo schema và liệt kê mọi vấn đề tìm thấy. Mỗi lỗi cho biết vị trí trong dữ liệu (một JSON Pointer như /tags/1), thông báo dễ hiểu và từ khóa schema bị vi phạm, giúp bạn sửa dữ liệu hoặc schema nhanh chóng. Hỗ trợ draft 2020-12, 2019-09, draft-07 và draft-04, bao gồm $ref, $defs, allOf/anyOf/oneOf, if/then/else, unevaluatedProperties và kiểm tra định dạng.
Cách dùng
- Dán dữ liệu vào Dữ liệu JSON và schema vào JSON Schema, hoặc tải tệp lên cho từng bên. Mẫu nạp một bản ghi người dùng có vài lỗi cố ý.
- Kết quả cập nhật khi bạn gõ: huy hiệu xanh nếu dữ liệu hợp lệ, nếu không sẽ hiện số lỗi và danh sách lỗi.
- Để Phiên bản ở Tự động để theo
$schema, hoặc chọn cố định một phiên bản. Tắt Báo mọi lỗi để dừng ở lỗi đầu tiên. - Sao chép lỗi sao chép danh sách dưới dạng văn bản thuần, tiện cho báo cáo lỗi hoặc review mã.
Nếu một trong hai bên không phải JSON hợp lệ, thông báo sẽ cho biết lỗi nằm ở dữ liệu hay schema, kèm dòng và cột.
Ví dụ
Với schema này:
{
"type": "object",
"required": ["id"],
"properties": {
"id": { "type": "integer" },
"age": { "type": "integer", "minimum": 0 }
}
}
tài liệu {"age": -1} tạo ra hai lỗi: tại (gốc) thiếu thuộc tính bắt buộc id; tại /age giá trị nhỏ hơn mức tối thiểu 0.
Mẹo
Thêm "additionalProperties": false để bắt các tên thuộc tính gõ sai, vốn sẽ lọt qua mà không báo. Dùng enum hoặc const cho giá trị cố định và pattern cho chuỗi như mã sản phẩm. Khi schema lớn dần, hãy chuyển các phần lặp lại vào $defs và tham chiếu bằng $ref.
Câu hỏi thường gặp
› Hỗ trợ những phiên bản JSON Schema nào?
Draft 2020-12, 2019-09, draft-07 (bao gồm cả draft-06) và draft-04. Khi Phiên bản để Tự động, phiên bản được đọc từ từ khóa $schema; schema không có $schema được coi là 2020-12.
› Các đường dẫn trong lỗi có ý nghĩa gì?
Đường dẫn đầu tiên là JSON Pointer trỏ tới giá trị không hợp lệ trong dữ liệu, ví dụ /items/2/price; (gốc) nghĩa là toàn bộ tài liệu. Dòng màu xám cho biết từ khóa bị vi phạm và vị trí của nó trong schema, ví dụ minimum · #/properties/age/minimum.
› Có kiểm tra các định dạng như email và date-time không?
Có. Các định dạng phổ biến đều được kiểm tra: date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uuid, regex, json-pointer và các định dạng khác. Định dạng không xác định sẽ được bỏ qua, như đặc tả cho phép.
› Schema có tham chiếu được tệp khác không?
Tham chiếu bên trong cùng một schema hoạt động, ví dụ $ref tới #/$defs/address. URL bên ngoài không được tải về vì không có gì rời khỏi trình duyệt; hãy dán các định nghĩa được tham chiếu vào $defs.