2013-09-24 32 views
6

Tôi có điều này JSON:JSON.parse của router Lỗi Cú pháp: dấu hiệu bất ngờ o

var data = [{ 
    "ID":1,"Name":"Test", 
    "subitem": [ 
     {"idenID":1,"Code":"254630"}, 
     {"idenID":2,"Code":"4566"}, 
     {"idenID":3,"Code":"4566"} 
    ] 
}]; 

console.log(JSON.parse(data)); //Uncaught SyntaxError: Unexpected token o 

Làm thế nào để de-serialize data để đối tượng javascript.

+3

gì bạn có ở đây là [literals JavaScript] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Values,_variables , _and_literals # Literals). Cú pháp của họ chính xác là nơi mà JSON nhận được cú pháp của nó. Nhưng, trong mã JavaScript, JSON sẽ luôn được định dạng dữ liệu được lưu trữ trong một 'Chuỗi', là kiểu dữ liệu mà' JSON.parse() 'mong đợi. –

Trả lời

12

Nó đã là một đối tượng ... thuộc loại Array. Để truy cập vào Object:

var foo = data[0]; 

alert(foo.ID); 

JSON.parse mất một String và phân tích nó thành một giá trị JavaScript tương đương.

2

Điều này có thể sử dụng được trong Javascript. Bạn cần phải phân tích cú pháp JSON khi dữ liệu của bạn ở định dạng Chuỗi và bạn nhận được nó từ phía máy chủ.

Mục đích của JSON.parse là chuyển đổi sang ký hiệu đối tượng Javascipt để sử dụng nó. Ví dụ,

var str = "{"a":1,"b":2}"; 
var obj = JSON.parse(str); //obj = {a:1, b:2} 

Reference MDN

+0

Về mặt kỹ thuật, JSON.parse chuyển đổi * từ * Ký hiệu đối tượng JavaScript thành đối tượng gốc. –

+0

@Colin Bạn có thể giải thích thêm một chút không. Theo MDN, "Phân tích chuỗi thành JSON, tùy ý chuyển đổi giá trị được tạo ra bằng cách phân tích cú pháp". https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse – KhanSharp

+1

@Khan: Tôi nghĩ điều anh ấy nói là 'JSON.parse' phân tích cú pháp một chuỗi chứa JSON thành một Đối tượng JavaScript, và chỉ cái cũ được gọi là JSON, không phải là sau này. – icktoofay

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