Định dạng & Nén JSON
Định dạng, nén và kiểm tra JSON với cây gập gọn, truy vấn JSONPath, phát hiện khóa trùng lặp và định vị lỗi theo dòng/cột. Tuân thủ RFC 8259.
Định dạng JSON - Format và Validate JSON Online
Công cụ định dạng và kiểm tra JSON online mạnh mẽ giúp bạn format, làm đẹp, nén và validate dữ liệu JSON. Có tính năng tô sáng cú pháp, phát hiện lỗi với vị trí chính xác và nhiều tùy chọn định dạng. Hoàn hảo cho lập trình viên, người kiểm thử API và bất kỳ ai làm việc với dữ liệu JSON.
Trình định dạng xử lý JSON không hợp lệ như thế nào?
Trình định dạng đầu tiên chạy đầu vào của bạn qua một lần JSON.parse nghiêm ngặt. Nếu phân tích thất bại, nó hiển thị thông báo lỗi cùng dòng và cột của ký tự gây lỗi (xác định được trên mọi trình duyệt lớn, bao gồm Firefox và Safari, không chỉ Chrome), giúp bạn nhận ra nguyên nhân có thể: dấu phẩy thừa, dấu nháy đơn thay vì kép, khóa không có dấu nháy, khối chú thích, hoặc chuỗi chưa kết thúc. Nó không bao giờ âm thầm "sửa" JSON của bạn, vì điều đó sẽ che giấu lỗi thực sự ở nguồn cấp dữ liệu thượng nguồn. Công cụ này chỉ kiểm tra JSON nghiêm ngặt — nó không phân tích các phương ngữ nới lỏng như JSON5 hoặc JSONC (chú thích, dấu phẩy thừa, khóa không có dấu nháy); hãy loại bỏ các tính năng đó trước khi kiểm tra, vì đầu ra của chúng không còn là JSON ECMA-404 và có thể bị từ chối bởi các bộ tiêu thụ hạ nguồn. Bộ phân tích nghiêm ngặt tuân thủ RFC 8259 và ECMA-404.
Sự khác biệt giữa JSON, JSON5, JSONC và NDJSON là gì?
JSON (RFC 8259 / ECMA-404) là định dạng chuẩn nghiêm ngặt: khóa trong dấu nháy kép, không chú thích, không dấu phẩy thừa. JSONC ("JSON với chú thích") là biến thể VS Code cho phép chú thích // và /* */; nó được dùng cho tsconfig.json và tệp cài đặt. JSON5 là tập cha phong phú hơn thêm khóa định danh ECMAScript không cần dấu nháy, dấu nháy đơn, chuỗi nhiều dòng, số thập lục phân, dấu thập phân đầu/cuối, +Infinity, NaN và dấu phẩy thừa. NDJSON (JSON phân tách bằng dòng mới) là định dạng luồng nơi mỗi dòng là một giá trị JSON hoàn chỉnh, được dùng cho tệp log, bộ dữ liệu học máy và luồng API. Chúng KHÔNG thể hoán đổi: bộ phân tích JSON nghiêm ngặt sẽ từ chối JSONC và JSON5. Hãy chọn theo bộ tiêu thụ: API hầu như luôn yêu cầu JSON nghiêm ngặt.
Tại sao JSON của tôi đột nhiên chứa các số như 9999999999999999 biến thành 10000000000000000?
Bản thân JSON không áp đặt giới hạn về độ chính xác số, nhưng hầu hết các bộ phân tích — bao gồm JSON.parse của JavaScript — lưu trữ số dưới dạng số thực dấu phẩy động IEEE 754 độ chính xác kép, chỉ có thể biểu diễn chính xác các số nguyên tới 2^53 - 1 (khoảng 9.007 triệu tỷ, hay Number.MAX_SAFE_INTEGER). Các số nguyên lớn hơn âm thầm làm tròn về số double có thể biểu diễn gần nhất. Điều này cắn vào các API trả về ID 64-bit (snowflake của Twitter, Discord, khóa chính BIGINT của cơ sở dữ liệu) — khi JavaScript phân tích chúng, các chữ số cuối bị sai. Cách khắc phục: (1) máy chủ nên tuần tự hóa số nguyên lớn dưới dạng chuỗi; (2) dùng bộ phân tích nhận biết BigInt như json-bigint hoặc tham số reviver của JSON.parse; (3) phân tích thủ công dưới dạng chuỗi.
Tôi có nên rút gọn JSON cho API sản xuất không?
Có cho các điểm cuối nhạy cảm với kích thước, không cho mọi thứ khác. Rút gọn loại bỏ tất cả khoảng trắng (khoảng trắng, tab, xuống dòng quanh : và ,) và thường tiết kiệm 20-40% byte tùy thuộc vào độ dài khóa và phân phối giá trị. Tiết kiệm trên đường truyền phần lớn bị xóa khi nén HTTP gzip hoặc Brotli vào cuộc — các bộ nén hiện đại xử lý khoảng trắng hiệu quả — nên lợi ích thực tế so với vận chuyển nén thường dưới 5%. Đánh đổi: JSON đã rút gọn không thể đọc được trong DevTools trình duyệt và bộ tổng hợp log, khiến gỡ lỗi sản xuất khó hơn. Thực hành tốt nhất: phục vụ JSON in đẹp trong môi trường phát triển và trên API nội bộ, JSON rút gọn chỉ cho các điểm cuối công khai lưu lượng cao nơi mỗi byte đều quan trọng và bộ tiêu thụ là máy móc.
Tại sao trình định dạng sắp xếp các khóa của tôi, và tôi có thể tắt nó không?
Sắp xếp khóa là tùy chọn và tắt mặc định trong công cụ này — việc định dạng bảo toàn thứ tự khóa gốc từ đầu vào của bạn. Một số quy trình làm việc hưởng lợi từ khóa được sắp xếp: đầu ra xác định cho git diff, JSON chuẩn cho ký mật mã (JCS, RFC 8785), và giảm xung đột hợp nhất. Các quy trình khác phụ thuộc vào thứ tự chèn: lược đồ OpenAPI nơi các trường bắt buộc được liệt kê trước, bản ghi log nơi dấu thời gian phải đến trước, tệp cấu hình theo mẫu được tài liệu hóa. Đối tượng JavaScript bảo toàn thứ tự chèn cho khóa chuỗi theo ES2015, và JSON.stringify phản ánh thứ tự đó. Nếu bạn muốn đầu ra được sắp xếp, tùy chọn "Sắp xếp khóa" của công cụ này thực hiện sắp xếp đệ quy sâu bằng so sánh nhận biết ngôn ngữ.

Làm sao tôi tìm một giá trị hoặc đường dẫn cụ thể bên trong tệp JSON lớn?
Để khám phá ad-hoc, JSONPath ($..book[?(@.price<10)]) và JMESPath (locations[*].name | sort(@)) là các ngôn ngữ truy vấn được thiết kế chính xác cho việc này — cả hai đều có triển khai JavaScript. Công cụ dòng lệnh jq là tùy chọn mạnh nhất cho pipeline shell: jq '.users[] | select(.age > 30) | .name' lọc và chiếu trong một biểu thức. Để điều hướng cây trong trình định dạng này, dùng các nút có thể thu gọn để khoan vào trực quan, sau đó dùng Ctrl+F để tìm kiếm văn bản. Đối với các tệp thực sự khổng lồ (trên 100 MB), tránh tải toàn bộ tài liệu vào bộ nhớ — dùng các bộ phân tích luồng như Node.js stream-json, Python ijson, hoặc Decoder của Go encoding/json để xử lý từng token một. Lập chỉ mục vào cơ sở dữ liệu (SQLite JSON1, Postgres JSONB) là câu trả lời đúng khi một tệp được truy vấn nhiều lần.
Tại sao bộ phân tích của tôi từ chối khóa trùng lặp trong một đối tượng?
RFC 8259 nói hành vi do triển khai định nghĩa: "Các tên trong một đối tượng NÊN là duy nhất". Hầu hết các bộ phân tích không phát lỗi; chúng âm thầm giữ giá trị cuối cùng được thấy (JSON.parse của JavaScript), hoặc giá trị đầu tiên (một số thư viện Go với unmarshaler tùy chỉnh), hoặc hợp nhất chúng (hiếm). Sự mơ hồ này là một nguồn lỗi thực sự và vấn đề bảo mật — xem các Lỗ hổng Tương tác JSON (mẫu CVE trong HTTP smuggling và xác minh JWT). Thực hành an toàn nhất là phơi bày trùng lặp: công cụ này quét văn bản thô và cảnh báo bạn mỗi khi một khóa lặp lại bên trong cùng một đối tượng, nêu tên khóa và dòng/cột của lần xuất hiện THỨ HAI (giá trị mà JSON.parse âm thầm giữ lại) để bạn có thể sửa nguồn cấp. Cảnh báo xuất hiện khi Kiểm tra, Định dạng và Nén, và không bao giờ chặn thao tác. Nếu bạn phải dung thứ trùng lặp vì lý do lịch sử, hãy tài liệu hóa giá trị nào thắng và kiểm thử đơn vị. JCS (RFC 8785) cấm hoàn toàn khóa trùng lặp.
Truy vấn JSONPath tích hợp hoạt động như thế nào?
Nhập một biểu thức JSONPath vào ô Truy Vấn và nhấp Chạy Truy Vấn để trích xuất các giá trị khớp mà không cần công cụ bên ngoài. Bộ đánh giá hỗ trợ $ cho gốc, .field và ['field'] cho thuộc tính, [0] và [-1] cho chỉ mục mảng, [*] cho mọi phần tử con, ..field để duyệt đệ quy ở mọi độ sâu, hợp ['a','b'], và các vị từ lọc như [?(@.price<10)] hoặc [?(@.active==true)] với các toán tử == != < <= > >=. Ví dụ: $.store.book[*].author trả về mọi tác giả; $..price thu thập mọi giá trị price trong tài liệu; $.users[?(@.age>30)].name trả về tên những người dùng trên 30 tuổi. Kết quả được trả về dưới dạng mảng JSON và thanh trạng thái hiển thị số lượng khớp; mảng rỗng nghĩa là không có gì khớp. Mọi thứ chạy hoàn toàn trong trình duyệt nên an toàn cho dữ liệu nhạy cảm, và kết hợp tốt với cây gập gọn để xác định đường dẫn trước khi truy vấn.
Làm sao tôi thoát ký tự đặc biệt như xuống dòng, tab, hoặc dấu nháy bên trong chuỗi JSON?
Chuỗi JSON dùng một tập nhỏ dấu thoát gạch chéo ngược định nghĩa trong RFC 8259 mục 7: \" cho dấu nháy kép, \\ cho gạch chéo ngược, \/ cho gạch chéo xuôi (tùy chọn), \b cho lùi lại, \f cho nạp biểu mẫu, \n cho xuống dòng, \r cho quay đầu dòng, \t cho tab, và \uXXXX cho bất kỳ điểm mã Unicode nào tới U+FFFF. Các điểm mã trên U+FFFF (emoji, CJK hiếm) dùng cặp thay thế UTF-16: \uD83D\uDE00 cho 😀. Các ký tự điều khiển U+0000 đến U+001F PHẢI được thoát — một byte xuống dòng nguyên văn bên trong chuỗi JSON là không hợp lệ. Thoát gạch chéo xuôi được phép nhưng không bắt buộc; nhiều công cụ thoát nó bên trong </script> để phòng thủ chống lại tiêm HTML khi JSON được nhúng trong thẻ <script>. Trình định dạng này bảo toàn kiểu thoát của bạn khi đi khứ hồi và cung cấp tùy chọn chuẩn hóa.
Tính năng chính
- Định dạng JSON với thụt lề tùy chỉnh (2, 4, 8 khoảng trắng hoặc tab)
- Nén JSON để giảm kích thước file cho production
- Kiểm tra cú pháp JSON với vị trí lỗi chính xác
- Tô sáng cú pháp để dễ đọc hơn
- Sắp xếp khóa đối tượng theo thứ tự ABC
- Thống kê thời gian thực (ký tự, dòng, kích thước)
- Sao chép JSON đã định dạng vào clipboard
- Tải xuống JSON đã định dạng dưới dạng file .json
- Tải lên file JSON để định dạng
- Hỗ trợ chế độ tối
- Không giới hạn kích thước file
- Xử lý 100% phía client - dữ liệu của bạn không bao giờ rời khỏi trình duyệt
- Hoạt động offline sau khi tải lần đầu
- Thiết kế responsive thân thiện với mobile
