2012-05-10 32 views
8

Tôi gặp lỗi, trong cả công cụ dành cho nhà phát triển chrome và firefox, khi cố gắng đánh giá những điều sau :"SyntaxError: Mã thông báo không mong muốn:" khi nhập {"a": "", "b": ""} json vào bảng điều khiển

{ 
    "a": "", 
    "b": "" 
} 

jsonlint.com cho tôi biết nó hợp lệ. Đưa mã này vào một tệp javascript thực và chạy nó hoạt động tốt. Sự kỳ lạ chỉ xuất hiện khi tôi chạy nó trong bảng điều khiển trong các công cụ phát triển chrome hoặc firebug. Những gì đang xảy ra ở đây?

+0

trình cho tôi trong Firebug, hoặc ít nhất, nó sẽ phân tích nó nếu tôi gán đối tượng đó cho một biến. Tôi nhận được một lỗi khác nhau chỉ sử dụng đối tượng hoàn toàn một mình. –

+1

Quấn nó trong các góc. –

+0

bản sao có thể có của [Xác định đối tượng JavaScript trong bảng điều khiển] (http://stackoverflow.com/questions/9082110/defining-a-javascript-object-in-console) –

Trả lời

9

Bạn không thể thực thi JSON trong bảng điều khiển. Công cụ JavaScript cho rằng đó là một câu lệnh chặn, với một nhãn.

Vì vậy, đây:

{ 
    "a": "", "b": "" 
} 

được hiểu như là một tuyên bố khối. Phần "a": được hiểu là nhãn. Phần "", "b" được hiểu là một biểu thức (hai chuỗi ký tự và một toán tử dấu phẩy ở giữa). Hiện tại, ký tự : thứ hai không hợp lệ ở vị trí đó ... Tiếp theo, "a" được hiểu là chuỗi ký tự, và : không hợp lệ tại vị trí đó.

Bạn làm việc với JSON như vậy:

  1. Bạn đặt nó trong một tập tin .json,
  2. Bạn lấy nó thông qua Ajax như là một chuỗi,
  3. Bạn phân tích chuỗi thành một đối tượng với JSON.parse().

(Bạn cũng có thể giữ cho dữ liệu JSON như một chuỗi trong một biến, ví dụ, hoặc trong đối tượng localStorage. Dù bằng cách nào, liên quan đến JavaScript, dữ liệu JSON nên lúc nào cũng như một giá trị chuỗi.)

+0

Cảm ơn bạn, tôi đã điên cuồng vì điều đó. phải gán nó cho một biến để làm cho chrome hiển thị nó, 'a = {" foo ":" bar "}' – ThorSummoner

7

trên thực tế, cho một lần kiểm tra (sử dụng chính của tôi về debug console), bạn thể nhập cú pháp đối tượng JSON, nhưng bạn phải gán nó vào một biến:

> var x ={ 
    "a": "", 
    "b": "" 
    } 
undefined 

> x 
Object 
    a: "" 
    b: "" 
    __proto__: Object 
Các vấn đề liên quan