Trình kiểm tra JSON

Dán bất kỳ tài liệu JSON nào và xem nó có phân tích sạch theo RFC 8259 hay không. Dữ liệu không hợp lệ sẽ trả về đúng vấn đề, dấu phẩy thừa sau phần tử mảng cuối, khóa không có dấu nháy, chuỗi chưa đóng, dấu nháy đơn nơi JSON đòi dấu nháy kép, chuỗi escape sai, kèm dòng và cột nơi trình phân tích bỏ cuộc. Hữu ích khi gỡ lỗi một phản hồi API, một tệp cấu hình, một package.json mà đồng đội sửa tay hay đầu ra của một trình sinh mã.

Cách kiểm tra JSON hoạt động

  1. 1

    Dán JSON của bạn

    Bỏ vào một payload, một tệp cấu hình hoặc một phản hồi API. Khoảng trắng thì ổn; tab và comment thì không (JSON thuần không có comment).

  2. 2

    Phân tích bằng trình phân tích RFC 8259 nghiêm ngặt

    Trình kiểm tra bác bỏ mọi thứ mà đặc tả cấm: dấu phẩy thừa, khóa không có dấu nháy, dấu nháy đơn, `undefined`, số hệ thập lục.

  3. 3

    Đọc thông báo lỗi

    Nếu thất bại, bạn nhận được thông báo của trình phân tích kèm vị trí gần đúng: đủ để đi thẳng tới ký tự đó.

  4. 4

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

    Sửa vấn đề, dán lại, và xác nhận tài liệu hợp lệ trước khi commit hoặc gửi đi.

JSON nghiêm ngặt cho phép gì, và không cho phép gì

Có rất nhiều định dạng “gần giống JSON” lưu hành (JSON5, JSONC, HJSON, các biến thể kiểu YAML). Bản thân đặc tả JSON thì nhỏ và nghiêm ngặt; trình kiểm tra này cho bạn biết tài liệu của mình có sống sót qua một trình phân tích nghiêm ngặt hay không, đó là thứ mà phần lớn các hệ thống phía sau thực sự chạy.

Những quy tắc khiến hầu hết mọi người vấp

Quy tắc Hợp lệ Không hợp lệ
Khóa phải là chuỗi trong dấu nháy kép {"a": 1} {a: 1}
Chuỗi chỉ dùng dấu nháy kép "hello" 'hello'
Không có dấu phẩy thừa [1, 2, 3] [1, 2, 3,]
Không có comment (không có) // comment hoặc /* */
Số: không có + đầu, không .5 0.5 +1, .5
Chỉ các literal dành riêng true, false, null undefined, NaN
Mã hóa UTF-8 Chuỗi Unicode Chuỗi byte không hợp lệ

Lỗi thường gặp và ý nghĩa của chúng

  • “Unexpected token }, bạn có một dấu phẩy thừa trước dấu ngoặc nhọn đóng.
  • “Expected property name”, khóa không có dấu nháy hoặc bạn quên đặt dấu nháy quanh khóa đầu tiên.
  • “Unexpected end of input”, một dấu { hoặc [ mở chưa được đóng; hãy đếm số ngoặc.
  • “Bad control character”, một tab, ký tự xuống dòng hoặc byte điều khiển khác nằm trong một chuỗi literal. Hãy escape chúng thành \t, \n, v.v.
  • “Duplicate key”, thực ra không phải lỗi theo đặc tả JSON (đặc tả nói NÊN duy nhất), nhưng nhiều trình kiểm tra cảnh báo. Trình kiểm tra báo nó như một thông báo, không phải lỗi nghiêm trọng.

Nếu bạn cần định dạng nới lỏng hơn

  • JSON5 cho phép dấu phẩy thừa, comment và dấu nháy đơn. Dùng trình phân tích JSON5 nếu đó là định dạng đích của bạn.
  • JSONC (JSON có comment) là thứ mà cấu hình VS Code dùng. Hãy loại bỏ comment trước khi phân tích nghiêm ngặt.
  • YAML là một định dạng khác; đừng cho rằng nó “chỉ là JSON có thụt lề”.

Mẹo

  • Kiểm tra trước khi commit. Một lỗi gõ trong package.json hay một cấu hình CI làm hỏng cả bản build cho tới khi có người nhận ra.
  • In đẹp sau khi kiểm tra để diff dễ đọc khi review. Một tệp JSON một dòng thì hợp lệ nhưng review rất khổ.
  • Với payload lớn, hãy kiểm tra theo luồng (ví dụ jq trên dòng lệnh). Phân tích trong trình duyệt đuối sức khi vượt vài MB.

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

Công cụ này chỉ kiểm tra tính hợp lệ về cú pháp, nó có phải JSON đúng định dạng không? Với các quy tắc về cấu trúc (trường bắt buộc, giá trị enum, độ dài chuỗi), hãy dùng một trình kiểm tra JSON Schema. Hai bước này bổ trợ cho nhau: không có lý do gì chạy kiểm tra Schema trên một tài liệu ngay từ đầu đã không phải JSON hợp lệ.

Vì JSON tiêu chuẩn không có comment. ///* */ là một phần mở rộng hợp lý (JSONC, JSON5) nhưng JSON thuần bác bỏ chúng. Hãy loại bỏ comment trước khi gửi tới một bên tiêu thụ nghiêm ngặt, hoặc áp dụng JSON5 trên toàn bộ stack của bạn.

Không hợp lệ trong JSON nghiêm ngặt. Đặc tả chỉ cho phép số hữu hạn. Hãy tuần tự hóa chúng thành chuỗi ("NaN", "Infinity") hoặc thành null, tùy cách bên tiêu thụ xử lý dữ liệu thiếu.

Không, việc kiểm tra chạy trong trình duyệt của bạn, nên payload bạn dán không bao giờ rời khỏi trang. An toàn cho các tệp cấu hình nhạy cảm và phản hồi API chứa thông tin đăng nhập.

Công cụ liên quan

Công cụ này có phiên bản bằng các ngôn ngữ khác