Định dạng JSON
Biến một dòng JSON dài dằng dặc thành thứ bạn đọc được, hoặc nén nó gọn lại. Số lớn giữ nguyên từng chữ số, điều mà hầu hết công cụ định dạng online lặng lẽ làm sai. Không lưu trữ gì cả.
- Không bao giờ lưu trữ
- Không xếp hàng, không phải chờ
- Không cần đăng ký, không watermark
JSON đã định dạng sẽ hiện ở đây.
Cách hoạt động
Dán JSON
Hoặc thả một file .json vào. Mọi thứ bạn dán chỉ nằm trong trang này — không lưu trữ gì cả.
Chọn kiểu thụt lề
Hai dấu cách, bốn dấu cách, tab, hoặc nén gọn thành một dòng. Lựa chọn được ghi nhớ cho lần sau.
Sao chép hoặc tải xuống
Sao chép kết quả hoặc lưu thành file. Nếu JSON bị lỗi, bạn sẽ nhận được dòng, cột và ký tự gây lỗi.
Những gì được giữ nguyên sau khi xử lý
Định dạng là phân tích rồi in lại, và số là phần duy nhất được giữ đúng như văn bản bạn đã gõ. Phạm vi này rộng hơn trường hợp số nguyên lớn mà thông báo đếm: bất kỳ số nào có cách viết ngắn nhất trong JavaScript khác với cách bạn viết đều được xuất lại từ nguồn, nên 1.10 giữ số 0 ở cuối, 1e5 giữ dạng số mũ và số 0 âm vẫn là số âm. Chỉ những số nguyên không an toàn mới được tính trong cảnh báo, vì với chúng, nếu không giữ lại thì dữ liệu sẽ bị hỏng âm thầm chứ không chỉ là cách viết được sửa gọn.
Chuỗi không được giữ nguyên dạng văn bản. Các ký tự escape được giải mã khi đọc tài liệu và được viết mới khi in ra, nên \u0041 trở thành A và dấu gạch chéo đã escape trở lại dạng trần. Giá trị giống hệt nhưng các byte thì không — điều này chỉ quan trọng trong một tình huống, nhưng ở đó thì rất quan trọng: nếu có khâu nào phía sau so sánh hai file JSON từng byte, việc đưa một trong hai qua công cụ định dạng không phải là thao tác vô hại.
Có hai hành vi ở cấp object nên biết trước khi tin vào một lần định dạng lại. Key trùng lặp được xử lý âm thầm, key cuối cùng được giữ, đúng như cách trình phân tích của chính trình duyệt xử lý — một tài liệu có hai trường “id” vẫn được định dạng mà không báo lỗi và trả về chỉ một trường, không có gì cho bạn biết trường kia từng tồn tại. Và thứ tự key chỉ giữ theo file của bạn với những key không phải số nguyên: một object chứa “1”, “2” và “name” sẽ trả về với các key dạng số đứng trước, theo thứ tự số, vì đó là cách chính JavaScript sắp xếp thuộc tính của object. Các key thông thường giữ đúng thứ tự bạn đã viết.
Khi bạn cần công cụ khác
Nếu thứ bạn có là tsconfig.json, file cấu hình ESLint hay file cài đặt VS Code, trang này sẽ chỉ ra các comment và dấu phẩy thừa thay vì định dạng lờ chúng đi — đó là câu trả lời đúng cho một công cụ JSON, nhưng lại là công cụ sai cho file của bạn. Đó là JSONC, và trình soạn thảo của bạn đã đọc được chúng; trên dòng lệnh, json5 và dasel đều đọc được mà không coi chúng là JSON.
Với mọi việc vượt quá thụt lề lại, công cụ định dạng không phải là loại công cụ phù hợp. jq làm được trong một biểu thức những gì một ô dán không có nút điều khiển nào: jq -S . sắp xếp key của mọi object để có thể so sánh hai phản hồi, jq 'del(.token)' bỏ một trường trước khi bạn đưa nội dung cho người khác xem, và jq -c thu một mảng object thành JSON Lines mà pipeline cần. Nó còn đọc từ file chứ không phải từ clipboard — khác biệt rõ rệt khi tài liệu lớn hơn mức bạn có thể bôi đen thoải mái.
Câu hỏi thường gặp
JSON của tôi có bị lưu ở đâu không?
Không. Không có lệnh gọi máy chủ, không ghi log và không lưu trữ gì cả. Bạn có thể ngắt kết nối internet sau khi trang tải xong và nó vẫn hoạt động. Điều này quan trọng hơn bạn nghĩ: thứ người ta dán vào một công cụ định dạng online là phản hồi API, file cấu hình và nội dung lỗi, và chúng thường xuyên chứa token, dữ liệu khách hàng và tên máy chủ nội bộ.
Tại sao công cụ này giữ chính xác số lớn trong khi các công cụ khác thì không?
Vì gần như mọi công cụ khác lặng lẽ làm hỏng chúng. Số trong JavaScript là số thực dấu phẩy động 64-bit, nên chỉ lưu chính xác được số nguyên tối đa 9.007.199.254.740.991. Bất kỳ số nào lớn hơn — ID bài đăng Twitter/X, snowflake của Discord, số tài khoản ngân hàng, khóa cơ sở dữ liệu 64-bit — sẽ mất các chữ số cuối ngay khi đi qua `JSON.parse`. Con số trông vẫn hợp lý, và đó chính là điều nguy hiểm: 7205759403792793600 lặng lẽ biến thành 7205759403792793000. Trang này giữ chính xác các chữ số bạn đã dán, và cho biết có bao nhiêu số đã được bảo vệ.
Công cụ xử lý file bị lỗi thế nào?
Nó cho bạn biết lỗi nằm ở đâu, chứ không chỉ báo là có lỗi. Bạn nhận được số dòng, số cột, chính dòng đó với dấu mũ chỉ dưới ký tự gây lỗi, và mô tả bằng lời dễ hiểu — “dấu phẩy thừa trước }” thay vì “Unexpected token”. Dấu phẩy thừa ở cuối, dấu nháy đơn, key không có dấu ngoặc kép và ký tự xuống dòng không được escape trong chuỗi là bốn lỗi chiếm phần lớn các trường hợp JSON hỏng, và mỗi lỗi đều được gọi tên cụ thể.
Công cụ có hỗ trợ JSON Lines / NDJSON không?
Có, và giữ nguyên cấu trúc. JSON Lines là mỗi dòng một giá trị JSON hoàn chỉnh — định dạng mà log và dữ liệu xuất ra hay dùng — và định dạng nó trải trên nhiều dòng sẽ phá hỏng chính điều làm nó hữu ích. Định dạng này được nhận diện tự động, mỗi dòng được định dạng riêng, và bố cục mỗi dòng một giá trị được giữ nguyên.
Công cụ có sửa được JSON có comment hoặc dấu phẩy thừa không?
Nó sẽ chỉ ra chính xác vị trí của chúng, nhưng sẽ không lặng lẽ chấp nhận. Comment và dấu phẩy thừa không phải là JSON — đó là JSON5 hoặc JSONC, thứ mà các file cấu hình như tsconfig.json thực sự dùng. Một công cụ định dạng lặng lẽ chấp nhận chúng sẽ trả cho bạn một file mà trình phân tích của bạn sau đó từ chối, còn tệ hơn một thông báo lỗi ở đây.
Có giới hạn dung lượng không?
Là bộ nhớ khả dụng, chứ không phải giới hạn do chúng tôi đặt ra. Tài liệu vài megabyte được định dạng tức thì; tài liệu rất lớn bị giới hạn bởi lượng dữ liệu có thể giữ cùng lúc, không phải bởi bất cứ thứ gì phía chúng tôi.
Nén JSON có làm thay đổi dữ liệu của tôi không?
Không. Nén chỉ xóa khoảng trắng giữa các token — không bao giờ đổi thứ tự key, không bao giờ đổi cách viết số, không bao giờ bỏ mất gì. Kết quả phân tích ra đúng giá trị như cũ, chỉ gọn hơn.
Nên biết: Việc định dạng là chính xác — tài liệu được phân tích rồi in lại, nên mọi thứ phân tích được sẽ ra đúng như vậy. Chỉ nhận JSON chuẩn: comment, dấu phẩy thừa ở cuối và key không có dấu ngoặc kép bị từ chối thay vì được lặng lẽ sửa, vì sửa chúng đồng nghĩa với phải đoán. Tài liệu rất lớn được giữ trong bộ nhớ hai lần trong lúc định dạng.
Đặt công cụ này lên website của bạn
Miễn phí cho mọi blog, trang lớp học hay bài viết hướng dẫn. Chỉ cần dán một đoạn mã là khách truy cập có thể dùng ngay trên trang của bạn.