Chuyển đến nội dung

Kiểm tra JSON

Không chỉ hợp lệ hay không hợp lệ — mà là dòng, cột, ký tự, và cách khắc phục. Không lưu trữ gì cả; việc kiểm tra chạy ngay tại đây.

  • Không bao giờ lưu trữ
  • Không xếp hàng, không phải chờ
  • Không cần đăng ký, không watermark
Đã định dạng

Dán JSON vào, nội dung sẽ được kiểm tra ngay khi bạn gõ.

Cách hoạt động

1

Dán JSON

Hoặc thả file vào. File được đọc ngay tại chỗ; không có gì bị gửi đi đâu cả.

2

Xem kết quả

Hợp lệ, kèm thống kê nội dung bên trong. Hoặc không hợp lệ, với vị trí lỗi được đánh dấu chính xác.

3

Sửa và kiểm tra lại

Sửa trực tiếp và kết quả cập nhật ngay khi bạn gõ.

JSON thực sự cấm những gì

Ngữ pháp JSON được thiết kế cố ý rất nhỏ gọn, và gần như mọi lỗi kiểm tra đều thuộc số ít những thứ người ta mượn từ JavaScript mà JSON không bao giờ chấp nhận. Dấu phẩy thừa sau phần tử cuối cùng. Dấu nháy đơn thay vì nháy kép. Key không có dấu ngoặc kép. Comment — JSON không có, và chưa bao giờ có. NaN và Infinity, là số hợp lệ trong JavaScript nhưng không hợp lệ trong JSON. Và ký tự byte order mark ở đầu file, vô hình trong mọi trình soạn thảo, mà một số công cụ Windows thêm vào khi lưu dạng UTF-8, khiến một tài liệu hoàn toàn đúng bị lỗi ngay ở ký tự đầu tiên.

Có hai thứ hợp lệ nhưng vẫn gây rắc rối cho bạn, và đó là lý do “hợp lệ” không đồng nghĩa với “đúng”. Key trùng lặp không bị cấm trong đặc tả — và mỗi trình phân tích xử lý chúng một kiểu, phần lớn lấy key cuối cùng, nên một tài liệu có key lặp lại vẫn hợp lệ ở đây nhưng mang nghĩa khác nhau trong các ngôn ngữ khác nhau. Và số không có giới hạn độ chính xác xác định trong JSON, trong khi hầu hết trình phân tích đọc chúng dưới dạng số thực dấu phẩy động: một số nguyên vượt quá khoảng chín triệu tỷ sẽ bị làm tròn âm thầm, và đó là lý do các ID lớn thường được lưu dưới dạng chuỗi.

Thứ bạn nhận lại là chính xác dòng, cột và ký tự nơi việc phân tích dừng lại, thường hữu ích hơn bản thân thông báo lỗi. Trình phân tích báo điểm mà tài liệu không còn hợp lý nữa, không phải nơi lỗi được tạo ra — thiếu dấu đóng ngoặc nhọn sẽ được báo ở cuối file, và thiếu dấu phẩy được báo ở token ngay sau nó. Thói quen nhìn ngay trước vị trí được báo là thứ tiết kiệm thời gian nhất.

Đúng cú pháp không đồng nghĩa với đúng nội dung, và sự khác biệt này quan trọng. Công cụ này xác nhận cú pháp phân tích được. Tài liệu có chứa các trường API của bạn yêu cầu không, một giá trị có nằm trong phạm vi không, một ngày có thực sự là ngày không — không điều nào trong số đó là câu hỏi về JSON. Đó là kiểm tra theo schema, cần có schema, và một tài liệu có thể hoàn hảo ở đây nhưng bị từ chối ngay lập tức bởi dịch vụ bạn gửi đến.

Khi bạn cần công cụ khác

Để kiểm tra tài liệu theo schema thay vì theo ngữ pháp, JSON Schema là tiêu chuẩn và ajv là bản triển khai nhanh nhất — nó sẽ cho bạn biết một trường bắt buộc bị thiếu hay một giá trị nằm ngoài phạm vi, vốn thường là câu hỏi bạn thực sự có. check-jsonschema chạy các kiểm tra tương tự từ dòng lệnh và trong CI.

Với mọi việc trên dòng lệnh, jq là công cụ nên có: jq empty file.json kiểm tra và không in ra gì khi thành công, đúng như một script cần, còn jq . thì định dạng. Với file quá lớn để giữ trong bộ nhớ, jq --stream và ijson của Python phân tích từng phần, điều mà không trang nào tải toàn bộ tài liệu làm được.

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

JSON của tôi có bị lưu ở đâu không?

Không. Không có lệnh gọi máy chủ, không ghi log và không lưu trữ gì cả. Bạn có thể ngắt kết nối internet sau khi trang tải xong và nó vẫn hoạt động. Điều này quan trọng hơn bạn nghĩ: thứ người ta dán vào một công cụ định dạng online là phản hồi API, file cấu hình và nội dung lỗi, và chúng thường xuyên chứa token, dữ liệu khách hàng và tên máy chủ nội bộ.

Khi JSON bị lỗi, công cụ cho tôi biết những gì?

Dòng, cột, chính dòng đó với dấu mũ chỉ dưới đúng ký tự lỗi, và thứ lẽ ra phải có ở đó. Phần lớn JSON bị lỗi vì một trong bốn lý do — dấu phẩy thừa ở cuối, dấu nháy đơn thay vì nháy kép, key không có dấu ngoặc kép, hoặc ký tự xuống dòng thật nằm trong chuỗi — và mỗi lỗi đều được gọi tên thay vì mô tả chung chung là lỗi cú pháp.

Thế nào là hợp lệ?

Tuân thủ nghiêm ngặt RFC 8259. Nghĩa là key đặt trong dấu ngoặc kép, không có dấu phẩy thừa, không có comment, và số không có số 0 ở đầu hay dạng hex. Nghiêm ngặt chính là mục đích của một công cụ kiểm tra: nếu nó chấp nhận thứ mà trình phân tích của bạn sẽ từ chối, nó chẳng cho bạn biết điều gì cả.

Công cụ có kiểm tra JSON theo schema không?

Không — công cụ này kiểm tra cú pháp, một câu hỏi khác. Cú pháp là văn bản có phải JSON hay không. Schema là dữ liệu có đúng các trường và kiểu dữ liệu hay không. Trang này trả lời câu hỏi thứ nhất; nó sẽ cho bạn biết file phân tích được và hiển thị cấu trúc tìm thấy, nhưng không biết các trường của bạn lẽ ra phải là gì.

Tại sao công cụ báo hợp lệ mà API của tôi vẫn từ chối?

Vì JSON hợp lệ và JSON mà API của bạn cần là hai chuyện khác nhau. Một tài liệu hoàn hảo về cú pháp vẫn có thể thiếu một trường bắt buộc, dùng chuỗi ở chỗ cần số, hoặc lồng dữ liệu khác với những gì endpoint mong đợi. Hãy đối chiếu phần tóm tắt cấu trúc trang này hiển thị với tài liệu của API — chỗ không khớp thường lộ ra ngay.

Số lớn có được kiểm tra đúng không?

Có, chính xác đến từng chữ số — hầu hết công cụ kiểm tra khác lặng lẽ làm hỏng chúng. Số trong JavaScript là số thực dấu phẩy động 64-bit, nên chỉ lưu chính xác được số nguyên tối đa 9.007.199.254.740.991. Bất kỳ số nào lớn hơn — ID bài đăng Twitter/X, snowflake của Discord, số tài khoản ngân hàng, khóa cơ sở dữ liệu 64-bit — sẽ mất các chữ số cuối ngay khi đi qua `JSON.parse`. Con số trông vẫn hợp lý, và đó chính là điều nguy hiểm: 7205759403792793600 lặng lẽ biến thành 7205759403792793000. Trang này giữ chính xác các chữ số bạn đã dán, và cho biết có bao nhiêu số đã được bảo vệ.

Có giới hạn dung lượng không?

Là bộ nhớ khả dụng, chứ không phải giới hạn do chúng tôi đặt ra. Tài liệu vài megabyte được định dạng tức thì; tài liệu rất lớn bị giới hạn bởi lượng dữ liệu có thể giữ cùng lúc, không phải bởi bất cứ thứ gì phía chúng tôi.

Nên biết: Công cụ kiểm tra JSON có đúng cú pháp hay không, chứ không kiểm tra ý nghĩa của nó. Một tài liệu có thể hoàn toàn hợp lệ mà vẫn thiếu các trường API của bạn cần — đó là kiểm tra theo schema, và cần có schema. Thứ bạn nhận được ở đây là chính xác dòng, cột và ký tự nơi việc phân tích dừng lại.

Đặt công cụ này lên website của bạn

Miễn phí cho mọi blog, trang lớp học hay bài viết hướng dẫn. Chỉ cần dán một đoạn mã là khách truy cập có thể dùng ngay trên trang của bạn.