Hỗ trợ kỹ thuật
Lỗi JSON thường gặp: Dấu phẩy thừa, dấu nháy và Unexpected token
Sửa JSON không hợp lệ: dấu phẩy thừa, nháy đơn, khóa không có nháy, và Unexpected token. Xem vì sao JSON.parse thất bại và cách kiểm tra JSON.
Hầu hết lỗi JSON đến từ quy tắc cú pháp chặt: dấu phẩy thừa, nháy đơn, tên thuộc tính không có nháy, thiếu phẩy, ngoặc lệch, escape sai, hoặc chú thích.
JSON trông giống đối tượng JavaScript, nhưng chặt hơn. Tên thuộc tính và chuỗi cần nháy kép.
Nếu thấy Unexpected token, ký tự được báo có thể là chỗ phân tích dừng—không nhất thiết chỗ sai ban đầu.
JSON của bạn bị đánh dấu không hợp lệ. Thường là lỗi cú pháp nhỏ, không phải định dạng tệp hỏng. Bảy sai lầm dưới đây gây hầu hết Unexpected token.
Vì sao JSON dễ hỏng?
JSON là định dạng dữ liệu có cú pháp chặt. Literal đối tượng JavaScript có thể trông giống nhưng vẫn không phải JSON hợp lệ. Trong JSON chuẩn, tên thuộc tính và chuỗi cần nháy kép, không cho phép dấu phẩy thừa, và chú thích không thuộc định dạng.
1. Dấu phẩy thừa (Trailing Commas)
Dấu phẩy thừa sau thuộc tính cuối là vấn đề. JSON chuẩn không cho phép.
Không hợp lệ
{
"name": "Alex",
"age": 30,
}
Hợp lệ
{
"name": "Alex",
"age": 30
}
Quy tắc ấy cũng áp dụng cho mảng. Bỏ dấu phẩy sau phần tử cuối.
Không hợp lệ
[
"red",
"green",
]
Hợp lệ
[
"red",
"green"
]
2. Nháy đơn thay vì nháy kép
JavaScript thường chấp nhận nháy đơn. JSON thì không. Cả tên thuộc tính và giá trị chuỗi phải dùng nháy kép.
Không hợp lệ
{
'name': 'Alex'
}
Hợp lệ
{
"name": "Alex"
}
3. Tên thuộc tính không có nháy
Trong JavaScript đôi khi viết name không cần nháy. Trong JSON mọi tên thuộc tính phải là chuỗi có nháy kép.
Không hợp lệ
{
name: "Alex",
age: 30
}
Hợp lệ
{
"name": "Alex",
"age": 30
}
4. Thiếu dấu phẩy giữa các giá trị
Thuộc tính và phần tử mảng cần dấu phẩy giữa chúng. Bộ phân tích có thể báo Unexpected token ở nháy hoặc ngoặc tiếp theo, không phải ở chỗ thiếu phẩy.
Không hợp lệ
{
"name": "Alex"
"age": 30
}
Hợp lệ
{
"name": "Alex",
"age": 30
}
5. Thiếu hoặc thừa ngoặc
Đối tượng dùng { }. Mảng dùng [ ]. JSON lồng nhau thường thất bại khi thiếu ], thừa }, hoặc hai loại bị đổi chỗ. Đếm cặp mở và đóng.
Không hợp lệ
{
"items": [1, 2
}
Hợp lệ
{
"items": [1, 2]
}
6. Chuỗi escape không hợp lệ
Trong chuỗi JSON, dấu gạch chéo ngược bắt đầu escape. Các chuỗi như ", \ và \n là hợp lệ. Đường dẫn Windows viết C:\Users thì không: \U không phải escape JSON hợp pháp. Nhân đôi gạch chéo ngược, nếu không bộ phân tích dừng ở ký tự đó.
Không hợp lệ
{"file":"C:\Users\Alex"}
Hợp lệ
{"file":"C:\\Users\\Alex"}
7. Chú thích trong JSON
JSON chuẩn không có chú thích. Một số công cụ cấu hình chấp nhận // hoặc /* */ (JSONC, JSON5, và tương tự). Đó không phải JSON chuẩn, và JSON.parse sẽ từ chối.
Không hợp lệ
{
// user name
"name": "Alex"
}
Unexpected token nghĩa là gì?
Bộ phân tích gặp một ký tự không được phép ở vị trí đó. Điểm được báo là nơi đọc dừng. Nếu bạn bỏ dấu phẩy sớm hơn, lỗi có thể trỏ vào nháy của thuộc tính kế. Cách diễn đạt tùy runtime; đừng kỳ vọng mọi trình duyệt in cùng một câu.
Unexpected end of JSON input nghĩa là gì?
Văn bản kết thúc trước khi giá trị hoàn tất. Nguyên nhân điển hình gồm thiếu } hoặc ], đầu vào bị cắt, thân trống, hoặc phản hồi API bị đứt. Không phải một lỗi duy nhất.
Vì sao JSON.parse() thất bại?
JSON.parse() chỉ nhận văn bản JSON hợp lệ. Đoạn này thành công:
const text = '{"name":"Alex"}';
const data = JSON.parse(text);
Đoạn này thất bại, vì nháy đơn không phải JSON:
const text = "{'name':'Alex'}";
JSON.parse(text);
Thông báo lỗi chính xác phụ thuộc runtime JavaScript. Coi thông báo là gợi ý, rồi kiểm tra dấu phẩy, nháy và ngoặc gần vị trí đó.
Literal đối tượng JavaScript có thể trông như { name: 'Alex' }. JSON hợp lệ phải trông như { "name": "Alex" }: tên và chuỗi có nháy kép, không dấu phẩy thừa, không chú thích.
- Văn bản JSON
- Bộ phân tích đọc token
- Dữ liệu hợp lệ hoặc Unexpected token
Cách tìm lỗi JSON nhanh
Làm theo thứ tự này. Đừng bắt đầu bằng cách viết lại cả tệp.
- Đưa JSON qua trình kiểm tra.
- Đọc lỗi được báo đầu tiên.
- Nhìn hơi trước vị trí được báo.
- Kiểm tra dấu phẩy, nhất là thừa và thiếu.
- Kiểm tra dấu nháy: chỉ nháy kép.
- Khớp { } và [ ].
- Kiểm tra escape gạch chéo ngược trong chuỗi.
- Xóa chú thích nếu cần JSON nghiêm ngặt.
Bảng nhanh các cách sửa thường gặp:
| Vấn đề | Cách sửa |
|---|---|
| Dấu phẩy thừa | Xóa dấu phẩy sau phần tử cuối. |
| Nháy đơn | Dùng nháy kép cho tên và chuỗi. |
| Khóa không có nháy | Bọc tên thuộc tính trong nháy kép. |
| Thiếu dấu phẩy | Đặt dấu phẩy giữa thuộc tính hoặc phần tử mảng. |
| Thiếu ngoặc | Đóng mọi cặp { } và [ ]. |
| Escape không hợp lệ | Dùng escape hợp pháp, hoặc nhân đôi gạch chéo ngược trong đường dẫn. |
| Chú thích | Xóa // và /* */ cho JSON chuẩn. |
Kiểm tra và định dạng JSON trong trình duyệt
NEXNARA Định dạng và so sánh JSON có thể kiểm tra JSON trên thiết bị này.
Bạn có thể kiểm tra, làm đẹp với 2 khoảng trắng, 4 khoảng trắng hoặc tab, minify, so sánh hai tài liệu (JSON Diff), và mở tệp .json. Phân tích dùng JSON.parse trong trình duyệt, không dùng eval.
Tài liệu lớn hơn 5 MB có thể chậm. Văn bản lớn hơn 15 MB không được xử lý trong trình duyệt, để trang vẫn phản hồi.
Việc xử lý JSON diễn ra trong trình duyệt của bạn. Công cụ này không gửi văn bản tới máy chủ NEXNARA. Quảng cáo và tính năng trang khác vẫn dùng mạng; điều đó tách biệt với xử lý.
Cần kiểm tra JSON không hợp lệ? Mở Định dạng và so sánh JSON và dán văn bản.
FAQ
Vì sao JSON của tôi báo Unexpected token?
Bộ phân tích gặp ký tự không được phép ở chỗ đó. Sai lầm thật—thường là thiếu phẩy hoặc nháy đơn—có thể nằm ngay trước vị trí đó.
JSON có cho phép dấu phẩy thừa không?
Không. JSON chuẩn không cho phép dấu phẩy sau thuộc tính hoặc phần tử mảng cuối. Literal đối tượng JavaScript thường cho phép.
JSON có dùng nháy đơn được không?
Không. Tên thuộc tính và chuỗi phải dùng nháy kép.
JSON có chứa chú thích được không?
Không trong JSON chuẩn. Một số công cụ chấp nhận JSONC hoặc JSON5 có chú thích; JSON.parse vẫn từ chối.
Vì sao JSON.parse() thất bại?
Chuỗi không phải JSON hợp lệ. Nguyên nhân điển hình là dấu phẩy thừa, nháy đơn, khóa không có nháy, chú thích, hoặc giá trị bị cắt. Thông báo chính xác phụ thuộc runtime.
Làm sao kiểm tra JSON có hợp lệ không?
Dán vào trình kiểm tra như Định dạng và so sánh JSON, hoặc gọi JSON.parse trong bảng điều khiển. Nếu phân tích ném lỗi, văn bản không phải JSON hợp lệ.