2013-12-10 17 views
5

Tôi có một mảnh JS chạy trong IE với dòng sau:Tại sao JSON.Parse lại nói "ký tự không hợp lệ"?

var data = JSON.parse("{ skill: 'SK_AUTO_DEV_TEST', kind: 'IS_REQUIRED' }");

bất cứ ai có thể cho tôi biết những gì sai với điều này?

+6

Vui lòng xem [JSONLint] (http://jsonlint.com/). Đây là trình xác thực trực tuyến cung cấp các thông báo lỗi khá tốt. –

Trả lời

13

Bởi vì đó không phải là hợp lệ JSON

JSON.parse('{ "skill": "SK_AUTO_DEV_TEST", "kind": "IS_REQUIRED" }'); 
+1

Cảm ơn. Tại sao báo giá được yêu cầu xung quanh tên thuộc tính? Tôi đã thấy rằng không phải lúc nào cũng là trường hợp với các trình phân tích cú pháp JSON. – skb

+2

Tiêu chuẩn yêu cầu báo giá kép. 'JSON.parse()' theo sau và có thể trình phân tích cú pháp khác mà bạn đã sử dụng đã được giải phóng trên quy tắc đó. Lý do là để có được xung quanh vấn đề từ dành riêng. Tạo một đối tượng đơn giản trong một tệp JavaScript và thử '{if: 0}' và '{" nếu ": 0}'. Đoán xem cái nào là lỗi? – epascarello

+0

Xin chào @epascarello, bất kỳ ý tưởng nào về cách xử lý bên dưới đoạn mã 'var text = '{" skill ":" SK_AUTO_DEV_TEST "," loại ":" IS_REQUIRED "}'; JSON.parse (văn bản); 'Đối với tôi, nó nói Char không hợp lệ ở dòng phân tích cú pháp. Tôi mệt mỏi trong w3school với báo giá duy nhất, có làm việc của nó, nhưng trong javascript của tôi thêm dấu ngoặc kép của nó ở đầu và cuối thts làm cho phân tích cú pháp của tôi như 'JSON.parse (" {"kỹ năng": "SK_AUTO_DEV_TEST", "loại": " IS_REQUIRED "}"); ' – Jaikrat

2

Để xây dựng trên câu trả lời của epascarello, vui lòng tham khảo json.org. Lưu ý trong sơ đồ đầu tiên rằng tên trong cặp tên/giá trị được định nghĩa là "chuỗi". Sau đó lưu ý trong biểu đồ xác định "chuỗi" mà nó phải bắt đầu và kết thúc bằng dấu ngoặc kép. Cũng lưu ý rằng điều này áp dụng cho cả tên và giá trị.

Các vấn đề liên quan