RevealTheme logo

Trình định dạng và kiểm tra JSON

Định dạng, làm đẹp, kiểm tra và thu gọn JSON. Chạy hoàn toàn trong trình duyệt của bạn, vì vậy dữ liệu của bạn không bao giờ rời khỏi thiết bị.

Cách sử dụng công cụ này

  1. 1

    Dán JSON của bạn vào ô nhập.

  2. 2

    Nhấp Format để in đẹp với thụt lề, hoặc Minify để loại bỏ khoảng trắng.

  3. 3

    Lỗi sẽ chỉ ra chính xác dòng và cột nơi quá trình phân tích thất bại.

  4. 4

    Sao chép kết quả vào bộ nhớ tạm của bạn.

JSON là gì và tại sao việc định dạng nó lại quan trọng?

JSON (JavaScript Object Notation) là ngôn ngữ chung của các API web hiện đại, các tệp cấu hình và việc ghi nhật ký sự kiện có cấu trúc. Mọi API REST và GraphQL đều trả về JSON; mỗi tệp package.json, tsconfig.json và hầu hết các cấu hình CI đều là JSON; AWS, GCP và Azure đều giao tiếp bằng JSON trong các CLI của chúng. Điểm mạnh của JSON là ngữ pháp tối giản: sáu ký tự cấu trúc ({}, [], dấu phẩy, dấu hai chấm, dấu ngoặc kép), bốn kiểu nguyên thủy (chuỗi, số, boolean và null) và lồng đệ quy. Sự tối giản đó cũng là nhược điểm của nó: JSON không hỗ trợ chú thích, dấu phẩy cuối, khóa không có dấu ngoặc kép hay chuỗi nhiều dòng. Chỉ một dấu ngoặc kép hoặc dấu phẩy đặt sai chỗ là làm hỏng toàn bộ tài liệu. Công cụ này kiểm tra đầu vào theo RFC 8259 (đặc tả của JSON) rồi trình bày nó với thụt lề nhất quán để dễ đọc, hoặc loại bỏ toàn bộ khoảng trắng để truyền qua mạng. Việc phân tích cú pháp và định dạng chạy hoàn toàn trong trình duyệt của bạn thông qua các hàm gốc JSON.parse và JSON.stringify của bộ máy JavaScript, chính là đoạn mã chạy trên các máy chủ Node.js và trong mọi trình duyệt. Điều đó có nghĩa là dữ liệu của bạn không bao giờ truyền qua mạng và hành vi kiểm tra ở đây khớp chính xác với những gì mã của bạn sẽ thấy trong production.

Các trường hợp sử dụng phổ biến

  • Gỡ lỗi phản hồi API bằng cách dán chúng vào trình định dạng — thấy ngay cấu trúc mà JSON đã rút gọn che giấu.

  • Xác thực JSON trước khi gửi đến một bên tiêu thụ nghiêm ngặt (AWS CloudFormation, manifest Kubernetes, v.v.).

  • In đẹp nhật ký từ các thư viện ghi log có cấu trúc (Pino, Bunyan) vốn xuất JSON một dòng.

  • Rút gọn tệp cấu hình trước khi nhúng vào HTML hoặc biến môi trường (nhỏ hơn, phân tích ít byte hơn).

  • Định dạng payload JSON Web Token sau khi giải mã chúng từ base64.

  • So sánh hai phản hồi API bằng cách định dạng cả hai rồi đối chiếu khác biệt.

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

JSON của tôi có rời khỏi trình duyệt không?
Không. Toàn bộ việc phân tích cú pháp và định dạng diễn ra trong trình duyệt của bạn thông qua các hàm tích hợp JSON.parse và JSON.stringify. Dữ liệu không bao giờ đến một máy chủ nào hay xuất hiện trong nhật ký. An toàn khi dùng với các phản hồi API chứa token, dữ liệu khách hàng hoặc các bí mật khác.
Tôi có thể định dạng JSON5 hoặc JSONC (có chú thích) không?
Không: công cụ này tuân theo đặc tả JSON nghiêm ngặt (RFC 8259). Chú thích và dấu phẩy cuối là các lỗi cú pháp và sẽ tạo ra một thông báo lỗi từ bộ phân tích cú pháp. Đối với các biến thể JSON linh hoạt, hãy dùng một bộ phân tích cú pháp JSON5 như json5.org, hoặc đưa đầu vào của bạn qua một bộ tiền xử lý để loại bỏ các chú thích trước.
Tôi nên dùng kích thước thụt lề nào?
2 dấu cách là quy ước của JavaScript và web, và là phổ biến nhất. 4 dấu cách là giá trị mặc định của hệ sinh thái Python (khớp với thụt lề của PEP 8). Các dấu tab được biểu diễn không nhất quán giữa các trình soạn thảo và làm hỏng các công cụ so sánh; hãy tránh dùng chúng trừ khi nhóm của bạn có một quy ước nghiêm ngặt về dấu tab. Lựa chọn này hoàn toàn mang tính thẩm mỹ; các bộ phân tích cú pháp không quan tâm.
Tại sao JSON thu gọn lại quan trọng?
JSON thu gọn tiết kiệm byte, điều đáng kể ở quy mô lớn (ví dụ, một API công khai trả về 100 KB dữ liệu cho hàng triệu yêu cầu). Đối với các tệp cấu hình nhỏ (chỉ vài KB), sự khác biệt là không đáng kể. Thời gian phân tích cú pháp của trình duyệt là như nhau đối với JSON đã định dạng và JSON đã thu gọn, vì vậy lý do duy nhất để thu gọn là băng thông.
Tôi diễn giải các thông báo lỗi như thế nào?
Các thông báo lỗi từ JSON.parse của JavaScript bao gồm vị trí (độ lệch tính từ đầu) nơi việc phân tích cú pháp thất bại. Các lỗi thường gặp: 'Unexpected token' thường cho biết thiếu một dấu ngoặc kép hoặc dấu phẩy, hoặc một ký tự đặc biệt chưa được thoát. 'Unexpected end of JSON input' nghĩa là tài liệu bị cắt cụt. 'Unexpected non-whitespace character' thường cho biết có một dấu phẩy cuối.
Tôi có thể định dạng các tệp JSON rất lớn không?
JSON.parse của trình duyệt xử lý được các tệp lên đến khoảng 100 MB trước khi hiệu suất trở nên có vấn đề. Đối với các tệp lớn hơn, hãy dùng jq trên dòng lệnh: nó có thể xử lý theo luồng các tệp JSON lớn tùy ý.
Sự khác biệt giữa JSON và các đối tượng literal của JavaScript là gì?
JSON là một tập con nghiêm ngặt của cú pháp đối tượng literal của JavaScript. Khác biệt: các khóa JSON phải là chuỗi nằm trong dấu ngoặc kép (JS cho phép khóa không có dấu ngoặc kép và dấu ngoặc đơn); JSON cấm chú thích, dấu phẩy cuối và undefined; JSON không có biểu thức, lệnh gọi hàm hay giá trị được tính toán. JavaScript có thể đánh giá JSON một cách an toàn; JSON không thể đánh giá JavaScript tùy ý.

Công cụ liên quan