Công cụ Định Dạng & Xác Thực JSON Trực Tuyến Miễn Phí

Dán JSON của bạn để định dạng, thu gọn hoặc xác thực nó ngay lập tức. Tất cả xử lý diễn ra trong trình duyệt của bạn.

Dữ liệu của bạn không bao giờ rời khỏi thiết bị
$

JSON là gì?

JSON (JavaScript Object Notation) là một định dạng dữ liệu nhẹ được sử dụng để trao đổi dữ liệu giữa máy chủ và ứng dụng web. Nó dễ đọc đối với con người và dễ phân tích đối với máy. Công cụ này giúp bạn định dạng, thu gọn và xác thực dữ liệu JSON, hoàn hảo cho các nhà phát triển gỡ lỗi phản hồi API, tệp cấu hình và cấu trúc dữ liệu.

Việc "Format JSON" Thực Sự Làm Gì

JSON không nhạy cảm với khoảng trắng ở cấp đặc tả: một parser đọc {"name":"Alice","age":30} giống hệt như dạng nhiều dòng được thụt lề. Sự khác biệt nhìn thấy được hoàn toàn dành cho người đọc. Format (còn gọi là "pretty-printing" hoặc "beautifying") chèn thụt lề giữa các cấp lồng nhau, đặt mỗi thuộc tính trên dòng riêng của nó, và thêm khoảng trắng sau dấu hai chấm giữa khóa và giá trị. Minify thì làm ngược lại: loại bỏ mọi byte khoảng trắng ngoại trừ bên trong các literal chuỗi. Phản hồi HTTP sản xuất thường được minify để tiết kiệm băng thông (gzip và Brotli ở edge CDN xử lý phần còn lại); trong quá trình phát triển, phiên bản được format là cái bạn đọc. Các quy ước format chuẩn: 2 dấu cách mỗi cấp thụt lề (mặc định web hiện đại: mặc định Prettier, chuẩn hệ sinh thái JavaScript), 4 dấu cách cho codebase tuân theo các quy ước Python-influenced, hoặc 1 tab cho các dự án thích thụt lề tab. JSON.stringify() trong JavaScript nhận đối số thứ hai là số nguyên hoặc chuỗi để kiểm soát chính xác điều này: JSON.stringify(data, null, 2) tạo ra output thụt lề 2 dấu cách. Công cụ này đưa ra ba tùy chọn tương tự.

JSON Nghiêm Ngặt: Các Quy Tắc Làm Người Ta Vấp

Ngữ pháp của JSON nổi tiếng không tha thứ. Khóa đối tượng phải được trích dẫn bằng dấu ngoặc kép (dấu ngoặc đơn không hợp pháp). Giá trị chuỗi phải sử dụng dấu ngoặc kép. Không có dấu phẩy trailing sau thuộc tính cuối cùng của một đối tượng hoặc phần tử cuối cùng của một mảng: một nguồn gốc thường xuyên gây ngạc nhiên cho các nhà phát triển JavaScript vì JS chính nó chấp nhận dấu phẩy trailing. Không có comment: không giống YAML hay JavaScript, JSON không có cú pháp comment. Không có giá trị undefined: JSON chỉ có null; cố gắng JSON-encode undefined của JavaScript sẽ loại bỏ thuộc tính hoàn toàn. Số phải ở dạng JSON-decimal: không có số 0 ở đầu (007 bất hợp pháp), không có hex (0x7F bất hợp pháp), không có Infinity hay NaN. Chuỗi phải là UTF-8 hợp lệ: hầu hết các parser dung thứ các vấn đề surrogate-pair UTF-16 nhưng đặc tả yêu cầu Unicode được hình thành đúng. Khóa trùng lặp về mặt kỹ thuật là hợp lệ theo đặc tả nhưng tạo ra hành vi không xác định trong hầu hết các parser (giá trị cuối cùng thường thắng). Một số biến thể JSON nới lỏng các quy tắc này: JSON5 (Aseem Kishore, 2012) cho phép dấu phẩy trailing, dấu ngoặc đơn, comment và các nới lỏng tiện dụng khác; JSONC (được sử dụng bởi VS Code tsconfig.json và tương tự) là JSON với các comment dòng kiểu C được phép; HJSON nhằm thân thiện với con người với khóa được trích dẫn tùy chọn. Không có cái nào là JSON proper: chúng cần parser riêng, và hầu hết tooling sản xuất mong đợi JSON nghiêm ngặt theo RFC 8259.

Nơi JSON Được Format Phát Huy Giá Trị

JSON Trong Hệ Sinh Thái Tooling Rộng Hơn

Đối với các luồng công việc dòng lệnh, jq (Stephen Dolan, phát hành lần đầu năm 2012) là bộ xử lý JSON kinh điển: một nhị phân nhỏ, được liên kết tĩnh xử lý format (jq .), lọc (jq '.users[] | .email'), biến đổi và các truy vấn phức tạp với ngôn ngữ biểu thức ngắn gọn riêng của nó. Thư viện chuẩn của Python bao gồm python -m json.tool để pretty-print một lần. JSON.stringify(obj, null, 2) tích hợp của JavaScript là bộ format trong-trình-duyệt/trong-Node nhanh nhất. JSON Schema (draft hiện tại 2020-12, được biên tập bởi Henry Andrews, Austin Wright, Greg Dennis và những người khác) cung cấp một từ vựng để khai báo hình dạng mà tài liệu JSON phải có: ràng buộc kiểu, thuộc tính bắt buộc, validator format, logic có điều kiện: và là tiêu chuẩn cho xác thực hợp đồng API, đặc tả OpenAPI 3.x, xác thực cấu hình, và tạo form dựa trên JSON. JSONPath (Stefan Goessner, 2007, hiện được chuẩn hóa là RFC 9535 vào tháng 2 năm 2024) là ngôn ngữ truy vấn giống XPath cho JSON, được sử dụng bởi tập hợp con đơn giản hơn của jq và bởi các công cụ như Postman, jsonpath-ng (Python), và AWS CLI. JSON-LD (W3C Recommendation, phiên bản hiện tại 1.1 được công bố tháng 7 năm 2020) mở rộng JSON với các quy ước dữ liệu liên kết web ngữ nghĩa và là định dạng mà Google khuyến nghị để đánh dấu dữ liệu có cấu trúc trên các trang web. JSON Patch (RFC 6902) và JSON Merge Patch (RFC 7396) định nghĩa các định dạng diff/patch chuẩn hóa cho các tài liệu JSON.

Chế Độ Xem Tree: Tại Sao Nó Quan Trọng

Một tài liệu JSON pretty-printed thậm chí với kích thước vừa phải (vài trăm dòng) khó điều hướng dưới dạng văn bản phẳng. Chế độ xem tree trong công cụ này thu gọn mỗi đối tượng và mảng thành một nút có thể mở rộng, cho phép bạn nhấp vào để chỉ xem các cấp bạn quan tâm và hiển thị biểu thức JSONPath cho bất kỳ nút nào bạn nhấp vào. Tính năng đường dẫn-khi-nhấp là cầu nối thực tế giữa "tôi có thể thấy giá trị tôi muốn trong tài liệu" và "tôi có thể viết mã truy cập giá trị đó": dán đường dẫn vào jq, vào một truy vấn JSONPath, vào ký hiệu dấu ngoặc JavaScript, vào một xác nhận test Postman. Đối với các phản hồi API lồng nhau sâu (Stripe, Shopify, Salesforce, bất cứ thứ gì với mô hình lĩnh vực phong phú), chế độ xem tree + sao-chép-đường-dẫn là quy trình làm việc đưa "Tôi thấy trường" đến "Tôi có biểu thức truy cập" trong hai lần nhấp.

Quyền Riêng Tư: Xác Thực Chỉ-Trình-Duyệt

JSON được dán vào một bộ format thường là dữ liệu sản xuất thực: phản hồi API với định danh người dùng, token phiên, ID thực thể nội bộ, các giá trị cấu hình bao gồm URL endpoint và cờ tính năng. Các bộ format JSON phía-máy-chủ lấy bản sao của mỗi đầu vào vào nhật ký của họ. Công cụ này phân tích JSON của bạn với JSON.parse() tích hợp của trình duyệt, đi qua cấu trúc kết quả trong JavaScript và phát ra lại nó dưới dạng chuỗi: tất cả bên trong tab trình duyệt của bạn. Xác minh trong tab Network của DevTools khi bạn nhấp Format (không có yêu cầu nào kích hoạt), hoặc đưa trang offline (chế độ máy bay) sau khi tải và bộ format vẫn hoạt động. An toàn cho các phản hồi API sản xuất, cấu hình nội bộ, JSON chứa token hoặc khóa, hoặc bất kỳ tài liệu nào bạn không muốn được sao chép vào ổ cứng của người lạ.

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

Tại sao JSON của tôi không vượt qua xác thực?

Các vấn đề phổ biến bao gồm dấu phẩy cuối sau mục cuối cùng, dấu nháy đơn thay vì dấu nháy kép, khóa không có dấu nháy và thiếu dấu ngoặc. JSON nghiêm ngặt, các khóa và giá trị chuỗi phải sử dụng dấu nháy kép.

Sự khác biệt giữa định dạng và thu gọn là gì?

Định dạng thêm thụt lề và dòng mới để con người có thể đọc. Thu gọn loại bỏ tất cả khoảng trắng không cần thiết để giảm kích thước tệp cho việc sử dụng trong sản xuất. Nội dung dữ liệu giống nhau theo cả hai cách.

Có giới hạn kích thước không?

Không có giới hạn cứng. Vì công cụ chạy trong trình duyệt của bạn, các tệp JSON rất lớn (10+ MB) có thể chậm trên các thiết bị cũ. Đối với phản hồi API điển hình và tệp cấu hình, nó hoạt động ngay lập tức.

"Sort Keys" làm gì và tôi nên sử dụng nó khi nào?

Sort Keys sắp xếp khóa của mọi đối tượng theo thứ tự bảng chữ cái một cách đệ quy. Ngữ nghĩa dữ liệu không thay đổi: thứ tự khóa của đối tượng JSON về mặt kỹ thuật là không xác định theo đặc tả, mặc dù hầu hết các parser bảo toàn thứ tự chèn: nhưng output trở thành kinh điển. Hữu ích cho việc so sánh hai tài liệu JSON nên tương đương về mặt ngữ nghĩa (không có sắp xếp, sự khác biệt thứ tự-khóa tạo ra các diff ồn ào), và để tạo ra các output bản dựng có thể tái tạo (cùng dữ liệu phải luôn được serialize thành JSON giống hệt byte bất kể nó được xây dựng trong bộ nhớ như thế nào).

Các tài liệu JSON của tôi có được tải lên không?

Không. Tất cả phân tích, xác thực, format, sắp xếp và rendering tree xảy ra trong trình duyệt của bạn thông qua JSON.parse() và JavaScript. JSON đã dán không bao giờ vượt qua mạng. Xác minh trong tab Network của DevTools khi bạn nhấp Format (không có yêu cầu nào kích hoạt), hoặc đưa trang offline (chế độ máy bay) sau khi tải. An toàn cho các phản hồi API độc quyền, cấu hình nội bộ, JSON chứa token hoặc dữ liệu phiên, hoặc bất cứ điều gì được bảo vệ bởi NDA.

Công cụ liên quan