T

Text Machine

Công cụ văn bản mạnh mẽ, ngay trong trình duyệt của bạn

Trình định dạng JSON

Làm đẹp, kiểm tra và rút gọn JSON ngay trong trình duyệt của bạn. Dán dữ liệu, chọn kiểu thụt lề và nhận kết quả gọn gàng, dễ đọc ngay lập tức — không có gì được tải lên.

JSON đầu vào

0 dòng · 0 ký tự

Thụt lề

Cách sử dụng Trình định dạng JSON

  1. 1

    Dán JSON của bạn

    Dán JSON đã rút gọn, lộn xộn, hoặc đã được thụt lề sẵn vào ô nhập liệu.

  2. 2

    Chọn cách thụt lề

    Chọn 2 khoảng trắng, 4 khoảng trắng, hoặc tab để kiểm soát cách kết quả được làm đẹp được thụt lề.

  3. 3

    Định dạng hoặc rút gọn

    Nhấn 'Format' để in đẹp và xác thực JSON, hoặc 'Minify' để nén nó thành một dòng duy nhất.

  4. 4

    Sao chép kết quả

    Dùng nút 'Copy' để lấy kết quả đã định dạng hoặc đã rút gọn cho dự án của bạn.

Làm việc với JSON: định dạng, xác thực, và những lỗi gây khó

JSON thực chất là gì

JSON (JavaScript Object Notation) là một định dạng trao đổi dữ liệu dựa trên văn bản đã trở thành cách mặc định để các dịch vụ giao tiếp với nhau qua HTTP. Bất chấp cái tên, nó độc lập với ngôn ngữ: các bộ phân tích tồn tại cho mọi ngôn ngữ phổ thông, và định dạng truyền đi chỉ là văn bản UTF-8. Một tài liệu được dựng nên từ đúng sáu kiểu giá trị — đối tượng (tập hợp khóa/giá trị không có thứ tự), mảng (danh sách có thứ tự), chuỗi, số, các giá trị boolean true và false, và null. Mọi thứ bạn tuần tự hóa, từ một phản hồi API đến một tệp cấu hình, đều phân rã thành sáu kiểu đó.

Hai quy tắc khiến người ta vấp ngã liên tục. Thứ nhất, khóa trong một đối tượng phải là chuỗi đặt trong dấu nháy kép — các định danh trần thì không được phép, khác với cú pháp đối tượng theo nghĩa đen trong JavaScript. Thứ hai, JSON không phân biệt số nguyên với số thực và không có cú pháp chú thích. Một con số chỉ là một con số, và bất kỳ ghi chú nào của con người mà bạn muốn để lại đều phải nằm bên trong một giá trị chuỗi hoặc bị loại bỏ trước khi phân tích.

Định dạng so với rút gọn

Đây là hai cách nhìn về cùng một dữ liệu. Định dạng (còn gọi là làm đẹp hoặc in dạng đẹp) chèn các ngắt dòng và thụt lề để cấu trúc lồng nhau hiện ra rõ ràng trong nháy mắt — đây là điều bạn muốn khi đọc một dữ liệu, so sánh hai phản hồi trong hệ thống quản lý phiên bản, hoặc dán một ví dụ vào tài liệu. Rút gọn làm điều ngược lại: nó loại bỏ từng byte khoảng trắng không quan trọng để tạo ra một dòng gọn duy nhất, đây là thứ bạn gửi đi qua mạng nơi mỗi kilobyte tốn kém độ trễ và băng thông.

Cả hai hướng đều không làm mất dữ liệu. Khoảng trắng giữa các token không bao giờ quan trọng trong JSON, nên gộp một đối tượng 40 dòng thành một dòng duy nhất rồi mở rộng lại sẽ cho ra các giá trị được phân tích giống hệt nhau. Thứ duy nhất thay đổi là số byte và khả năng đọc, đó chính là lý do công cụ này cung cấp cả hai nút thay vì ép buộc một kiểu duy nhất.

Những lỗi cú pháp bạn sẽ thực sự gặp phải

Lỗi phổ biến nhất là dấu phẩy thừa ở cuối — một dấu phẩy đặt sau phần tử cuối của một mảng hoặc cặp cuối của một đối tượng. JavaScript dung thứ cho nó; JSON cấm nó, nên một danh sách kết thúc bằng một dấu phẩy trước dấu ngoặc đóng sẽ phân tích thất bại. Ngay sau đó là việc dùng dấu nháy đơn thay vì dấu nháy kép (chuỗi JSON phải dùng dấu nháy kép) và các khóa không có dấu nháy được sao chép thẳng từ mã nguồn JavaScript.

Các thủ phạm thường gặp khác: một chú thích lạc lõng (// hoặc kiểu khối), vốn hợp lệ trong JSONC và JSON5 nhưng không hợp lệ trong JSON nghiêm ngặt; các giá trị như NaN, Infinity hay undefined, vốn đơn giản là không tồn tại trong đặc tả; và các ký tự điều khiển chưa được thoát như một tab hoặc ngắt dòng theo nghĩa đen bên trong một chuỗi. Khi bộ xác thực chỉ vào một dòng, hãy rà soát một hai ký tự trước vị trí được làm nổi bật — bộ phân tích thường chỉ nhận ra vấn đề tại token tiếp theo sau lỗi thực sự.

Chọn một kiểu thụt lề

Hai khoảng trắng là tiêu chuẩn trên thực tế cho JSON trên web và là mặc định được phần lớn công cụ tạo ra, bao gồm nhiều bộ kiểm tra lỗi và bộ định dạng. Bốn khoảng trắng đọc thoáng hơn cho các cấu trúc lồng sâu, còn tab cho phép mỗi lập trình viên chọn chiều rộng hiển thị của riêng mình trong khi vẫn giữ tệp giống hệt nhau từng byte. Câu trả lời đúng là bất cứ thứ gì kho lưu trữ của bạn đang dùng; trộn lẫn các kiểu trong một dự án tạo ra những khác biệt nhiễu loạn và vô nghĩa.

Thụt lề thuần túy là vẻ ngoài và bị loại bỏ ngay khoảnh khắc tài liệu được phân tích, nên nó không bao giờ ảnh hưởng đến tính đúng đắn. Hãy chọn một chiều rộng, áp dụng nó nhất quán, và để bộ định dạng chuẩn hóa bất cứ thứ gì được dán vào từ một nguồn khác.

Thứ tự khóa và tính toàn vẹn dữ liệu

Bộ định dạng này thụt lề lại và giãn cách lại tài liệu của bạn nhưng không sắp xếp lại các khóa hay thay đổi bất kỳ giá trị nào. Điều đó quan trọng bởi vì, mặc dù đặc tả JSON định nghĩa các đối tượng là không có thứ tự, hầu như mọi bộ phân tích thực tế đều giữ nguyên thứ tự chèn vào, và các bên tiêu thụ ở phía sau — các bài kiểm tra ảnh chụp, các dữ liệu đã ký, những người rà soát đọc một bản so sánh — thường phụ thuộc vào nó. Một công cụ âm thầm sắp xếp các khóa có thể phá vỡ một phép kiểm tra chữ ký hoặc chôn vùi một thay đổi một dòng trong một cuộc xáo trộn cả trăm dòng.

Nếu bạn thực sự muốn đầu ra chuẩn tắc, đã sắp xếp để có các bản so sánh ổn định hoặc để băm nội dung, đó là một thao tác có chủ đích, riêng biệt mà bạn nên chủ động chọn một cách có ý thức — chứ không phải một tác dụng phụ của việc in dạng đẹp. Giữ việc định dạng và việc sắp xếp lại tách biệt nghĩa là bạn luôn biết chính xác điều gì đã thay đổi.

Số, độ chính xác và Unicode

Số trong JSON là số thập phân và không có giới hạn kích thước khai báo, nhưng động cơ JavaScript phân tích chúng trong trình duyệt của bạn lưu trữ chúng dưới dạng dấu phẩy động 64 bit. Điều đó nghĩa là các số nguyên lớn hơn khoảng chín triệu tỷ (trần số nguyên an toàn) có thể mất độ chính xác qua một vòng chuyển đổi, đó là lý do các ID lớn, các giá trị snowflake và các khoản tiền thường được truyền đi dưới dạng chuỗi thay vì số thô. Nếu sự chính xác quan trọng, hãy đặt giá trị trong dấu nháy.

Các chuỗi là Unicode đầy đủ. Bạn có thể viết các ký tự trực tiếp dưới dạng UTF-8 hoặc dưới dạng các chuỗi thoát gạch chéo ngược u, và cả hai dạng đều phân tích thành cùng các điểm mã. Vì định dạng là văn bản UTF-8 từ đầu đến cuối, các chữ cái có dấu, các chữ viết không phải Latin và emoji vẫn nguyên vẹn qua việc định dạng và rút gọn.

Mọi thứ ở lại trong trình duyệt của bạn

Toàn bộ việc phân tích, xác thực và tuần tự hóa lại đều chạy cục bộ trong JavaScript. Không có gì bạn dán vào được tải lên, ghi lại hay lưu trữ trên một máy chủ, nên việc định dạng các phản hồi API chứa token truy cập, định danh nội bộ hay dữ liệu khách hàng là an toàn. Trần thực tế là bộ nhớ của thiết bị bạn chứ không phải bất kỳ giới hạn tải lên nào, nên các bản xuất lớn vẫn định dạng tốt trên một máy có cấu hình hợp lý.

Một thói quen hữu ích: khi một tích hợp gặp trục trặc, hãy dán phản hồi thô vào đây trước. Xác nhận dữ liệu là JSON đúng định dạng trước khi bạn đổ lỗi cho mã của mình sẽ tách một lỗi tuần tự hóa khỏi một lỗi phân tích chỉ trong vài giây, và nó làm vậy mà không để lộ dữ liệu ra bất cứ đâu.

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

Khác biệt giữa Format và Minify là gì?
Format (làm đẹp) thêm dấu ngắt dòng và thụt lề để cấu trúc dễ đọc, còn Minify loại bỏ mọi khoảng trắng không cần thiết để tạo ra JSON một dòng nhỏ nhất có thể cho các payload trong môi trường production.
Bộ định dạng có xác thực JSON của tôi không?
Có. Nếu JSON không hợp lệ, nó hiển thị lỗi làm nổi bật nơi xảy ra vấn đề thay vì tạo ra kết quả, để bạn nhanh chóng tìm ra dấu phẩy, dấu ngoặc hay dấu nháy bị thiếu.
Có những tùy chọn thụt lề nào?
Bạn có thể định dạng với 2 khoảng trắng, 4 khoảng trắng, hoặc ký tự tab, cho phép khớp với phong cách viết mã của nhóm hoặc dự án của bạn.
Công cụ có sắp xếp lại các khóa hoặc thay đổi dữ liệu không?
Không. Nó chỉ thụt lề lại hoặc nén cấu trúc hiện có. Thứ tự khóa và mọi giá trị được giữ nguyên đúng như xuất hiện trong dữ liệu đầu vào của bạn.
JSON của tôi có được tải lên không, và công cụ có xử lý được tệp lớn không?
Không có gì được tải lên. Bộ định dạng chạy hoàn toàn trong trình duyệt của bạn, nên an toàn cho dữ liệu nhạy cảm, và nó có thể xử lý các tài liệu lớn chỉ bị giới hạn bởi bộ nhớ khả dụng của thiết bị.

Công cụ liên quan

Tiếp tục với những công cụ hữu ích này

Công cụ Nén HTML

Bộ Chuyển Đổi HTML sang Văn Bản

Trình kiểm tra Regex

Trình giải mã JWT

Trình tạo Gradient CSS

Trình tạo Box Shadow CSS