2011-08-03 8 views
20

đối tượng JSON tôi đánh giá để:Parsing JSON w/@ tại biểu tượng đăng nhập nó (arobase)

{ "@io": IO, "@type": XXX } 

Nếu biến này được gọi là my_json, làm thế nào để truy cập vào các giá trị @type XXX? Tôi đã thử [email protected], nhưng điều này gây ra lỗi. Giúp đánh giá cao. Cảm ơn,

Nick

+0

Độ nghiêng đầu tiên của tôi là thực hiện chuỗi thay thế cho phản hồi HTTP của bạn trước khi phân tích cú pháp. Có thể thay thế tất cả các trường hợp "@" bằng "at_" hoặc một cái gì đó. –

+1

Tôi không hiểu tại sao câu hỏi này bị bỏ phiếu xuống, và vì nhiều người tự hỏi cách truy cập thuộc tính hoặc phương thức đối tượng có đặt tên lẻ hoặc khi họ chỉ có một var chứa tên thuộc tính trong một chuỗi, tôi sẽ upvote. – JAAulde

+0

vì tôi tin rằng nó đã được trả lời nhiều lần trong diễn đàn này http://stackoverflow.com/questions/1710103/accessing-json-fields-with-weird-characters –

Trả lời

30

Sử dụng khung vuông ký hiệu với một chuỗi:

var XXXValue = my_json['@type']; 

Cùng thể được sử dụng khi bạn có một tên thuộc tính trong một biến. Sử dụng cùng một ví dụ:

var propertyName = '@type'; 
var XXXValue = my_json[propertyName]; 
+1

Mục đích của biểu tượng @ bên trong tệp json là gì? Liệu nó có bất kỳ ý nghĩa bổ sung bên trong bối cảnh json? –

+1

@David trong một chuỗi như vậy, nó không có ý nghĩa cụ thể trong bất kỳ ngữ cảnh nào (JSON, JS, v.v.) trong câu hỏi. Tôi không biết tại sao OP có các khóa được đặt tên như vậy, nhưng nó không có ý nghĩa gì trong các công nghệ được thảo luận. – JAAulde

+1

Khá một câu hỏi cũ nhưng nó xuất hiện trong các tìm kiếm của Google. Biểu tượng @ trong JSON là JSON-LD (JSON cho Dữ liệu được Liên kết). http://en.wikipedia.org/wiki/JSON-LD – smoore4

1

Nếu kết thúc việc đánh giá bạn có thể lấy đối tượng và có thể lấy nó bằng khóa.

tức là obj ["@ type"]. Nhưng một cái gì đó có vẻ hơi lệch.

8

Như bạn đã phát hiện, bạn không thể sử dụng biểu tượng @ trong tên biến Javascript, [email protected] không hợp lệ.

Tin tốt cho bạn là bạn có thể truy cập các biến của mình dưới dạng bảng con mảng. Bạn sẽ làm như sau:

my_json["@type"] 

Hy vọng điều đó sẽ hữu ích.

+1

Sửa chữa cho tôi nếu tôi sai, nhưng tôi không nghĩ bạn nên sử dụng từ "mảng" ở đây. –