Tại sao:Tại sao JSON.parse không thành công với chuỗi rỗng?
JSON.parse('');
sẽ xuất hiện lỗi?
Uncaught SyntaxError: Unexpected end of input
Sẽ không hợp lý hơn nếu nó chỉ trả lại null
?
Tại sao:Tại sao JSON.parse không thành công với chuỗi rỗng?
JSON.parse('');
sẽ xuất hiện lỗi?
Uncaught SyntaxError: Unexpected end of input
Sẽ không hợp lý hơn nếu nó chỉ trả lại null
?
Vì chuỗi trống không hợp lệ nên không chính xác cho JSON.parse('')
để trả lại null
vì "null"
là JSON hợp lệ. ví dụ.
JSON.parse("null");
trả về null
. Nó sẽ là một sai lầm cho JSON không hợp lệ cũng được phân tích cú pháp thành null.
Trong khi chuỗi rỗng không hợp lệ thì hai dấu ngoặc kép là JSON hợp lệ. Đây là một dấu hiệu đặc biệt quan trọng.
Điều gì là để nói một chuỗi có chứa hai dấu ngoặc kép không giống như một chuỗi rỗng.
JSON.parse('""');
sẽ phân tích cú pháp chính xác, (trả về một chuỗi trống). Nhưng
JSON.parse('');
sẽ không.
trị chuỗi JSON tối thiểu là
Đối tượng trống '{}'
Mảng rỗng '[]'
Chuỗi rỗng '""'
Một số ví dụ'123.4'
Giá trị boolean true 'true'
Giá trị boolean false 'false'
Các giá trị null 'null'
JSON.parse
dự kiến ký hiệu hợp lệ bên trong một chuỗi, cho dù đó là đối tượng {}
, mảng []
, chuỗi ""
hoặc loại số (int, float, double).
Nếu có khả năng phân tích cú pháp là chuỗi trống thì nhà phát triển nên kiểm tra.
Nếu nó được xây dựng vào chức năng, nó sẽ bổ sung thêm chu kỳ, vì các chức năng được xây dựng dự kiến sẽ cực kỳ hiệu quả, nên không thể lập trình chúng cho trường hợp cuộc đua.
Điều này không chính xác. Hãy thử phân tích chuỗi có chứa hai dấu ngoặc kép JSON.parse ('""'); – bhspencer
Json không phải là ngôn ngữ đánh dấu, sẽ chính xác hơn khi nói JSON.parse mong đợi một chuỗi phù hợp với đặc điểm kỹ thuật. – bhspencer
JSON không hỗ trợ kiểu nguyên thủy int. Nó được gọi là "số" và hỗ trợ các giá trị thực không chỉ ints. – bhspencer
Vì '' không phải là đối tượng Javascript/JSON hợp lệ. Một đối tượng có sản phẩm nào sẽ là '{}'
Để tham khảo: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse
Đối với một chuỗi JSON giá trị ít nhất một "{}" là bắt buộc. Xem thêm tại số http://json.org/
Điều này không chính xác. Một chuỗi chỉ chứa hai trích dẫn là JSON hợp lệ. – bhspencer
Sử dụng try-catch để tránh nó:
var result = null;
try {
// if jQuery
result = $.parseJSON(JSONstring);
// if plain js
result = JSON.parse(JSONstring);
}
catch(e) {
// forget about it :)
}
yeah nó có vẻ như một lỗi trong thiết kế của hàm 'parse'. bạn có thể bọc nó trong 'try catch' ... nhưng đó là xấu xí :) – vsync
Nó tạo ra một lỗi khi bất cứ thứ gì không hợp lệ JSON được chuyển vào, giống như một chuỗi rỗng. Nó thực sự không phải là không phổ biến để tạo ra một bí danh được bọc trong một try/catch để tránh các lỗi như vậy. – adeneo
Một chuỗi rỗng không phải là một json hợp lệ, sau đó nó không thành công. Đừng nghĩ rằng nó phân tán nhiều phân tích hơn :) –