Trình Xem Cây JSON
Dán dữ liệu JSON bên dưới và xem nó dưới dạng cây tương tác có thể thu gọn với giá trị màu.
Cách hoạt động
- Dán JSON của bạn: đặt bất kỳ chuỗi JSON nào, đối tượng, mảng, cấu trúc lồng nhau, vào trường nhập.
- Khám phá cây: JSON hiển thị dưới dạng cây tương tác có thể thu gọn. Nhấp vào một nút để mở rộng hoặc thu gọn các nút con.
- Điều hướng và kiểm tra: tìm các khóa hoặc giá trị cụ thể bằng cách mở rộng các nhánh. Dữ liệu lồng sâu trở nên dễ đọc trong nháy mắt.
Tại sao sử dụng trình xem cây JSON?
JSON thô từ API, tệp cấu hình và cơ sở dữ liệu nổi tiếng là khó đọc khi chứa các cấu trúc lồng sâu. Trình xem cây JSON biến văn bản phẳng thành bản đồ trực quan phân cấp, nơi bạn có thể thấy ngay hình dáng của dữ liệu, phát hiện các khóa bị thiếu, theo dõi các đường dẫn lồng nhau và hiểu cấu trúc mà không phải phân tích tinh thần các dấu ngoặc và dấu phẩy. Đây là công cụ thiết yếu để gỡ lỗi API, khám phá dữ liệu và hiểu lược đồ.
Tính năng
- Cây tương tác: mở rộng và thu gọn bất kỳ nhánh nào để tập trung vào phần dữ liệu bạn quan tâm.
- Tô màu cú pháp: khóa, chuỗi, số, boolean và giá trị null được tô màu để nhận diện nhanh.
- Hỗ trợ lồng sâu: xử lý các đối tượng và mảng lồng tùy ý, bất kể kích thước.
- Phát hiện lỗi: JSON không hợp lệ được báo bằng thông báo lỗi rõ ràng trước khi hiển thị.
- Dựa trên trình duyệt: không gửi đến máy chủ, dữ liệu JSON của bạn ở lại hoàn toàn trong trình duyệt.
Câu hỏi thường gặp
Có giới hạn kích thước cho đầu vào JSON không?
Công cụ không áp đặt giới hạn cứng. Hiệu suất phụ thuộc vào trình duyệt và thiết bị của bạn. Các tệp JSON rất lớn (nhiều MB) có thể hiển thị chậm, nhưng phản hồi API và tệp cấu hình thông thường hoạt động tức thì.
Tôi có thể chỉnh sửa JSON trong chế độ xem cây không?
Công cụ này tập trung vào trực quan hóa và khám phá cấu trúc JSON. Để chỉnh sửa JSON, hãy sử dụng công cụ Trình định dạng JSON, cung cấp trình chỉnh sửa đầy đủ bên cạnh đầu ra đã định dạng.
Có hỗ trợ JSON với chú thích (JSONC) không?
JSON tiêu chuẩn không cho phép chú thích, và hầu hết các trình phân tích (bao gồm công cụ này) báo chúng là lỗi. Xóa chú thích trước khi dán, hoặc sử dụng trình chỉnh sửa tương thích JSONC cho JSON có chú thích.
JSON, định dạng dữ liệu đã chiến thắng
Douglas Crockford đã công bố JSON trên json.org vào năm 2001 như một giải pháp thay thế nhẹ cho XML, lấy cú pháp trực tiếp từ các literal đối tượng của JavaScript. Định dạng này lần đầu tiên được tiêu chuẩn hóa thành Internet-Draft IETF trong RFC 4627 (tháng 7 năm 2006), sau đó được sửa đổi thành RFC 7159 (tháng 3 năm 2014), và cuối cùng được thiết lập trong RFC 8259 (tháng 12 năm 2017), đây là tiêu chuẩn hiện tại và được giữ phù hợp với ECMA-404 (phiên bản 1 tháng 10 năm 2013, phiên bản 2 tháng 12 năm 2017). RFC 8259 đã thêm một yêu cầu quan trọng: mã hóa ở tầng mạng phải là UTF-8. Hai đặc tả bổ sung hoàn thiện hệ sinh thái: RFC 6901 «JSON Pointer» (tháng 4 năm 2013) định nghĩa cú pháp /store/book/0/title để định địa chỉ các nút bên trong tài liệu, và RFC 6902 «JSON Patch» định nghĩa một tài liệu JSON mô tả các thay đổi để áp dụng cho một tài liệu JSON khác. JSON Schema (bản nháp IETF hiện tại 2020-12) thêm xác thực. Mọi thứ khác được xây dựng dựa trên đó, JSONC cho các bình luận tệp cấu hình, JSON5 cho cú pháp lỏng lẻo, NDJSON cho streaming, đã đến sau.
Sáu kiểu giá trị JSON (và điều gì còn thiếu)
RFC 8259 §3 định nghĩa chính xác sáu kiểu giá trị. Không có gì khác.
- đối tượng: tập hợp không thứ tự các cặp tên-giá trị được phân định bởi dấu ngoặc nhọn. Khóa luôn là chuỗi.
- mảng: danh sách giá trị có thứ tự được phân định bởi dấu ngoặc vuông. Có thể chứa các loại hỗn hợp.
- chuỗi: ký tự Unicode trong dấu ngoặc kép. Dấu ngoặc đơn không phải JSON hợp pháp.
- số: dấu phẩy động độ chính xác kép IEEE 754. Đặc tả không đảm bảo độ chính xác tùy ý; các số vượt quá
Number.MAX_SAFE_INTEGER= 2⁵³ − 1 = 9 007 199 254 740 991 mất độ chính xác khi được phân tích cú pháp. true/false: literal boolean, chữ thường, không có dấu nháy.null: literal null, chữ thường, không có dấu nháy. Một khóa có giá trịnullkhác với một khóa vắng mặt.
Những gì JSON không có: kiểu ngày (quy ước là chuỗi ISO 8601 với múi giờ), bình luận (sử dụng trường siêu dữ liệu riêng), dấu phẩy cuối, chuỗi nháy đơn, số thập lục phân, undefined, NaN, hoặc Infinity. Bất kỳ điều nào trong số đó sẽ khiến JSON.parse ném SyntaxError.
JSON nghiêm ngặt, JSONC, JSON5: ai là ai
JSON nghiêm ngặt (RFC 8259) là những gì trình xem này chấp nhận: không có bình luận, không có dấu phẩy cuối, khóa nháy kép, chuỗi nháy kép. JSONC là quy ước của Microsoft được vận chuyển trong VS Code cho phép bình luận dòng // và bình luận khối /* ... */ trong khi giữ mọi thứ khác nghiêm ngặt; bạn thấy nó trong tsconfig.json, .vscode/settings.json, và gói npm jsonc-parser. JSON5 (2017, https://json5.org) là một superset thêm chuỗi nháy đơn, khóa không nháy, dấu phẩy cuối, số thập lục phân, các giá trị đặc biệt IEEE 754 (NaN, Infinity), và cả bình luận dòng và khối; gói npm json5 có khoảng 10 triệu lượt tải xuống hàng tuần. NDJSON / JSON Lines (https://jsonlines.org) là một biến thể streaming trong đó mỗi dòng là một tài liệu JSON độc lập, được sử dụng bởi các log shipper và pipeline thu nhận big-data. Loại bỏ các bình luận và dấu phẩy cuối trước khi dán nếu nguồn của bạn là JSONC hoặc JSON5.
Nơi mà trình xem cây thực sự kiếm được tiền lương của mình
- Kiểm tra phản hồi API. Stripe, GitHub, Slack, Twilio: mọi API hiện đại đều trả về JSON lồng nhau. Dán vào trình xem cây làm cho hình dạng trở nên rõ ràng.
- Tệp cấu hình.
package.json,tsconfig.json,composer.json,kubeconfig, và phần đuôi dài của các config JSON nhà cung cấp đám mây đều trở nên dễ kiểm tra hơn dưới dạng cây. - Kiểm tra xuất cơ sở dữ liệu. Đầu ra MongoDB
find(), các hàng PostgreSQLrow_to_json, danh sách hit ElasticSearch. - Khám phá lược đồ. Khi một API không có tài liệu, trình xem cây là tài liệu.
- Chuẩn bị diff. Trước khi chạy
json-diffhoặcjqgiữa hai tệp, hãy kiểm tra từng tệp trong trình xem để phát hiện thủ công các sự khác biệt rõ ràng. - Kiểm tra payload webhook. Stripe, GitHub, SendGrid và các dịch vụ tương tự đều gửi webhook JSON. Dán payload vào trình xem là cách nhanh nhất để xác minh những gì endpoint của bạn sẽ nhận được.
- Tạo dữ liệu mẫu. Xây dựng một fixture kiểm thử bằng cách nhập JSON và xem cây cập nhật từng bước; bắt được các dấu ngoặc bị thiếu trước khi bạn lưu tệp.
Sai lầm phổ biến khi làm việc với JSON
- Dấu phẩy cuối.
{"a": 1,}là JavaScript hợp pháp nhưng JSON không hợp pháp.JSON.parsenémSyntaxError: Unexpected token '}'. Loại bỏ chúng hoặc chuyển sang JSON5. - Bình luận.
// như thế nàyhoặc/* như thế này */hợp lệ trong JavaScript và JSONC nhưng không hợp lệ trong JSON nghiêm ngặt. - Mất độ chính xác số nguyên lớn. ID Twitter và Stripe có thể vượt quá 2⁵³;
JSON.parse("9007199254740993")trả về9007199254740992. Nhận chúng dưới dạng chuỗi nếu độ chính xác quan trọng. - Nhầm lẫn
nullvới vắng mặt.{"foo": null}cófoođược định nghĩa là null;{}cófookhông xác định. Sự phân biệt này quan trọng đối với các hợp đồng API và xử lý NULL của cơ sở dữ liệu. - Khóa trùng lặp. RFC 8259 nói rằng hành vi không được định nghĩa; trong thực tế mọi engine JS đều giữ giá trị cuối cùng.
{"a": 1, "a": 2}phân tích thành{a: 2}. - Tham chiếu vòng tròn.
JSON.stringifynémTypeError: Converting circular structure to JSON. Phẳng hóa các chu kỳ, sử dụng replacer, hoặc sử dụng thư viện nhưflatted. - Chuỗi ngày không có múi giờ.
"2026-05-12"là mơ hồ;"2026-05-12T18:30:00Z"là ISO 8601 không mơ hồ trong UTC. Luôn bao gồm offset.
Thêm câu hỏi thường gặp
Trình xem này có thể xử lý tệp JSON lớn đến mức nào?
Phân tích cú pháp 1 MB với JSON.parse mất khoảng 10 ms trong V8. Kết xuất 100.000 nút DOM thu gọn có thể đóng băng trình duyệt trong vài giây. Trong thực tế, trình xem này thoải mái lên đến khoảng 5 MB; vượt quá đó, mong đợi độ trễ đáng chú ý trong quá trình kết xuất. Đối với các tài liệu lớn hơn, sử dụng trình phân tích streaming như stream-json trong Web Worker, hoặc phân trang đầu vào thành các phần.
Tại sao số nguyên lớn của tôi trả về sai?
Các số JavaScript là float độ chính xác kép IEEE 754. Số nguyên lên đến 2⁵³ − 1 = 9 007 199 254 740 991 sống sót qua một chuyến đi-về chính xác; vượt quá đó, độ chính xác bị mất. ID snowflake Twitter (64-bit), ID khách hàng Stripe, ID giao dịch blockchain, và nhiều khóa thay thế cơ sở dữ liệu vượt quá giới hạn này. JSON.parse sẽ âm thầm cắt cụt. Khắc phục là nhận ID dưới dạng chuỗi (hầu hết các API hiện đại làm điều này) hoặc phân tích bằng thư viện hỗ trợ BigInt.
JSON Pointer là gì, và tôi sẽ sử dụng nó ở đâu?
RFC 6901 (tháng 4 năm 2013) định nghĩa một cú pháp đường dẫn để định địa chỉ các nút bên trong tài liệu JSON: /store/book/0/title chọn tiêu đề của cuốn sách đầu tiên trong mảng store. JSON Pointer là nền tảng của JSON Patch (RFC 6902), thể hiện các delta tài liệu dưới dạng mảng các cặp pointer-và-operation. Máy chủ API Kubernetes sử dụng JSON Patch cho các cập nhật gia tăng; API REST của GitHub và nhiều hệ thống khác cũng vậy.
NDJSON / JSON Lines có hoạt động trong trình xem này không?
Không. NDJSON là một giá trị JSON độc lập trên mỗi dòng, không có mảng bao bọc. JSON.parse trên toàn bộ tệp ném vì dòng thứ hai bắt đầu nơi đối tượng đầu tiên kết thúc. Bọc toàn bộ nội dung trong [ và ] và thay thế mỗi dòng mới giữa các đối tượng bằng dấu phẩy, hoặc dán mỗi lần một dòng, hoặc sử dụng trình xem NDJSON chuyên dụng.
JSON của tôi có được gửi đi đâu không?
Không. JSON.parse chạy trong engine JavaScript của trình duyệt của bạn, cây được kết xuất dưới dạng các nút DOM cục bộ, và không có bản sao dữ liệu của bạn được gửi qua mạng. Điều này an toàn cho các phản hồi API với bí mật, dữ liệu khách hàng hoặc PII. Mở tab Mạng trong DevTools và dán một mẫu: bạn sẽ thấy không có yêu cầu đi ra nào trong quá trình phân tích và kết xuất.