JSON Toolkit

Tệp JSON là gì, mở bằng gì và chỉnh sửa thế nào

Kết luận: Từ văn bản lỗi font trong Notepad đến ba cách mở tệp JSON, kèm cách xác nhận không có gì hỏng sau khi chỉnh sửa và phải làm gì khi tệp quá lớn không mở được.

Người mớiĐọc khoảng 9 phútXuất bản 2026-10-30Cập nhật 2026-10-30
Ảnh bìa cho kiến thức cơ bản về tệp JSON

Điểm mấu chốt: trước khi mở một tệp JSON, hãy xác nhận mã hóa và BOM của nó, rồi kiểm tra cấu trúc chỉ là object hoặc array; sau khi chỉnh sửa, hãy luôn xác thực bằng một trình phân tích thay vì dùng mắt ngó ngoặc và dấu phẩy.

Nó chỉ đơn giản là một tệp văn bản thuần với phần mở rộng .json, đến Notepad cũng mở được. Vấn đề thực sự không phải "mở không được", mà là mở ra rồi bạn không thấy được mình đã làm vỡ chỗ nào.

1. Bên trong một tệp JSON thực chất có gì

Một tệp JSON hợp lệ chỉ có thể chứa một trong hai thứ: một object {...} hoặc một array [...]. Không được có gì khác — không khai báo biến, không comment, không hàm.

{
  "name": "order service",
  "port": 8080,
  "debug": false,
  "upstream": ["10.0.0.11", "10.0.0.12"],
  "timeout": null
}

Chỉ cần nhận biết ba thứ về mặt cấu trúc là đủ:

Bạn thấy gì Ý nghĩa Khái niệm lập trình tương ứng
Các cặp key-value được bọc trong { } Một object; khóa phải là chuỗi đặt trong ngoặc kép Map / struct
Một dãy giá trị được bọc trong [ ] Một array; kiểu phần tử có thể khác nhau List
Sáu kiểu giá trị Chuỗi, số, boolean, null, object, array Chỉ sáu kiểu này; không có ngày tháng và không có số nguyên

Phần mở rộng tệp không quyết định nội dung: package.json, tsconfig.json và composer.json đều là cùng một loại thứ; chỉ là các công cụ khác nhau đã thống nhất đọc những khóa khác nhau từ chúng.

2. Ba cách mở, chọn theo tình huống

Chỉ muốn xem nhanh: mở bằng trình duyệt. Kéo tệp vào cửa sổ Chrome hoặc Edge, trình duyệt sẽ hiển thị nguyên trạng; nếu đã cài tiện ích JSON Viewer, nó sẽ tự động được định dạng đẹp và có thể thu gọn.

Cần chỉnh sửa nội dung: dùng trình soạn thảo. VS Code, Sublime và Notepad++ đều có sẵn tô sáng cú pháp JSON và ghép cặp ngoặc, và Shift + Alt + F trong VS Code sẽ định dạng tài liệu. Lưu ý rằng Notepad trên Windows có thể thêm BOM khi lưu, khiến thay đổi cấu hình của bạn không có hiệu lực; tốt hơn là tránh nó.

Không muốn cài gì, chỉ muốn xác thực: dùng trình định dạng JSON trực tuyến. Dán nội dung vào là bạn thấy ngay số dòng, số cột, vị trí lỗi và một cây có thể thu gọn; xong thì sao chép kết quả ra. Dữ liệu được xử lý cục bộ trong trình duyệt và không được tải lên máy chủ.

Tệp lớn (vài chục MB trở lên): đừng cố mở bằng trình soạn thảo. Mở một tệp JSON 100 MB trong VS Code sẽ đơ đến mức bạn phải hoài nghi lựa chọn sống của mình; hãy dùng dòng lệnh để xem cấu trúc trước:

# Look at the first 20 lines to confirm whether it is an array
head -n 20 data.json

# Use jq to list top-level keys without loading the whole file
jq -r 'keys[]' data.json | head

# Count the array length
jq 'length' data.json

3. Nhấp đúp mở ra văn bản lỗi font thì làm sao

Ba nguyên nhân, mỗi nguyên nhân xử lý một cách khác nhau:

  1. Thực chất nó là tệp nhị phân (ví dụ một gói nén, hoặc tệp cơ sở dữ liệu xuất ra, nhưng mang phần mở rộng .json). Dùng file data.json để xem kiểu thật; đừng ép nó được coi là văn bản.
  2. Mã hóa không phải UTF-8. Văn bản tiếng Trung được mã hóa GBK sẽ bị lỗi font trong môi trường UTF-8. Dùng "Mở lại với mã hóa" của trình soạn thảo để thử GBK một lần; nếu hiển thị đúng, hãy lưu lại dưới dạng UTF-8.
  3. Tệp đã bị mã hóa hoặc nén. Triệu chứng là PK (zip) hoặc một đống dấu hỏi ở đầu; những tệp này phải được giải nén hoặc giải mã trước.

4. Xác nhận không có gì hỏng sau khi chỉnh sửa

JSON không dung thứ: thiếu một dấu phẩy, thừa một dấu phẩy, hoặc thiếu một dấu ngoặc kép là cả tệp chết, và vị trí lỗi được báo thường trỏ sang dòng kế tiếp. Vì vậy bạn phải xác thực sau khi chỉnh sửa; đừng dựa vào mắt.

Ba thao tác chỉnh sửa rủi ro cao, xếp theo tần suất gây rắc rối:

Thao tác Hậu quả thường gặp Cách tránh
Dán một khối cấu hình vào Mang theo dấu phẩy cuối hoặc dấu câu full-width Định dạng ngay một lần sau khi dán
Tự đảo thứ tự các khóa Thừa hoặc thiếu một dấu phẩy Dùng lệnh di chuyển dòng của trình soạn thảo; đừng gõ lại bằng tay
Xóa phần tử cuối của array Để lại ,] Kiểm tra các ngoặc còn ghép cặp sau khi xóa

Xác thực rất đơn giản: dán vào trình xác thực trực tuyến và tìm chữ đỏ, hoặc chạy một dòng trên dòng lệnh:

python3 -m json.tool config.json > /dev/null && echo OK

Nếu nó in ra OK, tệp hợp lệ. Nếu bạn muốn xác thực cả kiểu của các trường (ví dụ port phải là số và name không được rỗng), viết một JSON Schema đáng tin cậy hơn nhiều so với mắt người.

5. .json khác gì các họ hàng gần

Phần mở rộng Khác biệt Trình phân tích chuẩn có đọc được không
.json JSON chuẩn Có
.jsonc Cho phép comment // và /* */ Không; phải xóa comment trước
.json5 Cho phép comment, dấu nháy đơn, khóa không ngoặc kép, dấu phẩy cuối Không; cần trình phân tích JSON5
.jsonl / .ndjson Mỗi dòng một JSON độc lập; cả tệp không phải JSON hợp lệ Không, không đọc được cả tệp; phải đọc từng dòng

Đừng ngạc nhiên khi thấy comment trong tsconfig.json; thực tế nó được xử lý như .jsonc. Đưa cùng nội dung đó cho JSON.parse là sẽ báo lỗi. Khi cần chuyển đổi giữa chúng, dùng JSON5 sang JSON để xóa comment và dấu phẩy cuối chỉ bằng một cú nhấp.

6. Khi nào nên đổi định dạng lưu trữ

JSON phù hợp với những tình huống "cấu trúc không cố định, con người cần đọc được, và nó đi qua nhiều ngôn ngữ khác nhau". Nếu một tệp vượt quá vài chục MB, cấu trúc trường ổn định và bạn cần truy vấn có điều kiện, thì bám lấy JSON chỉ là tự làm khó mình — hãy chuyển sang SQLite, Parquet, hoặc nạp vào cơ sở dữ liệu; hiệu năng đọc/ghi khác nhau đến nhiều bậc độ lớn. Về các đánh đổi cụ thể, xem Phân tích và streaming JSON lớn.

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

Làm sao xem một tệp JSON quá lớn không mở được?

Đừng cố mở bằng trình soạn thảo; mở một tệp JSON 100 MB trong VS Code sẽ đơ đến mức bạn phải hoài nghi lựa chọn sống của mình. Hãy dùng dòng lệnh để xem cấu trúc trước: head -n 20 xác nhận xem nó có phải array không, jq -r 'keys[]' chỉ liệt kê các khóa cấp cao nhất, và jq 'length' đếm độ dài array. Không lệnh nào trong số này nạp toàn bộ tệp.

Vì sao chỉnh sửa trong Notepad khiến cấu hình không có hiệu lực?

Notepad trên Windows có thể thêm BOM khi lưu, và tệp có BOM sẽ khiến việc phân tích cấu hình thất bại, nên nội dung đã chỉnh sửa không bao giờ có hiệu lực. Bài viết khuyến nghị dùng các trình soạn thảo như VS Code, Sublime hoặc Notepad++, vốn có sẵn tô sáng cú pháp JSON và ghép cặp ngoặc. Nếu bạn đã dùng Notepad, hãy lưu lại dưới dạng "UTF-8 without BOM" và thử lại.

Tôi có thể coi tệp JSON như JSON5 và thêm comment không?

Không — trình phân tích chuẩn không cho phép comment trong tệp .json và JSON.parse sẽ báo lỗi ngay. Comment thuộc về các tệp .jsonc hoặc .json5 được đọc bởi trình phân tích tương ứng. Những tệp như tsconfig.json thực tế được xử lý như .jsonc; đưa cùng nội dung đó cho JSON.parse là sẽ hỏng.