SyntaxError: JSON.parse: bad parsing
Các ngoại lệ JavaScript được ném ra bởi JSON.parse() xảy ra khi chuỗi không thể được phân tích cú pháp dưới dạng JSON.
Thông báo
SyntaxError: JSON.parse: unterminated string literal SyntaxError: JSON.parse: bad control character in string literal SyntaxError: JSON.parse: bad character in string literal SyntaxError: JSON.parse: bad Unicode escape SyntaxError: JSON.parse: bad escape character SyntaxError: JSON.parse: unterminated string SyntaxError: JSON.parse: no number after minus sign SyntaxError: JSON.parse: unexpected non-digit SyntaxError: JSON.parse: missing digits after decimal point SyntaxError: JSON.parse: unterminated fractional number SyntaxError: JSON.parse: missing digits after exponent indicator SyntaxError: JSON.parse: missing digits after exponent sign SyntaxError: JSON.parse: exponent part is missing a number SyntaxError: JSON.parse: unexpected end of data SyntaxError: JSON.parse: unexpected keyword SyntaxError: JSON.parse: unexpected character SyntaxError: JSON.parse: end of data while reading object contents SyntaxError: JSON.parse: expected property name or '}' SyntaxError: JSON.parse: end of data when ',' or ']' was expected SyntaxError: JSON.parse: expected ',' or ']' after array element SyntaxError: JSON.parse: end of data when property name was expected SyntaxError: JSON.parse: expected double-quoted property name SyntaxError: JSON.parse: end of data after property name when ':' was expected SyntaxError: JSON.parse: expected ':' after property name in object SyntaxError: JSON.parse: end of data after property value in object SyntaxError: JSON.parse: expected ',' or '}' after property value in object SyntaxError: JSON.parse: expected ',' or '}' after property-value pair in object literal SyntaxError: JSON.parse: property names must be double-quoted strings SyntaxError: JSON.parse: expected property name or '}' SyntaxError: JSON.parse: unexpected character SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data
Loại lỗi
SyntaxError
Nguyên nhân?
JSON.parse() phân tích cú pháp một chuỗi dưới dạng JSON. Chuỗi này phải là JSON hợp lệ và sẽ ném ra lỗi này nếu gặp cú pháp không đúng.
Ví dụ
>JSON.parse() không cho phép dấu phẩy cuối
Cả hai dòng đều sẽ ném ra SyntaxError:
js
JSON.parse("[1, 2, 3, 4,]");
JSON.parse('{"foo": 1,}');
// SyntaxError JSON.parse: unexpected character
// at line 1 column 14 of the JSON data
Bỏ dấu phẩy cuối để phân tích cú pháp JSON đúng cách:
js
JSON.parse("[1, 2, 3, 4]");
JSON.parse('{"foo": 1}');
Tên thuộc tính phải là chuỗi được đặt trong dấu nháy kép
Bạn không thể dùng dấu nháy đơn quanh tên thuộc tính, ví dụ như 'foo'.
js
JSON.parse("{'foo': 1}");
// SyntaxError: JSON.parse: expected property name or '}'
// at line 1 column 2 of the JSON data
Thay vào đó hãy viết "foo":
js
JSON.parse('{"foo": 1}');
Số 0 đứng đầu và dấu chấm thập phân
Bạn không thể dùng số 0 đứng đầu, ví dụ như 01, và dấu chấm thập phân phải được theo sau bởi ít nhất một chữ số.
js
JSON.parse('{"foo": 01}');
// SyntaxError: JSON.parse: expected ',' or '}' after property value
// in object at line 1 column 2 of the JSON data
JSON.parse('{"foo": 1.}');
// SyntaxError: JSON.parse: unterminated fractional number
// at line 1 column 2 of the JSON data
Thay vào đó chỉ viết 1 mà không có số 0 và sử dụng ít nhất một chữ số sau dấu chấm thập phân:
js
JSON.parse('{"foo": 1}');
JSON.parse('{"foo": 1.0}');