2011-02-09 41 views
10

Tôi có một JSON được chuyển tới tập lệnh. Tôi không biết các khóa JSON vì chúng năng động.phím json dưới dạng số

Thực ra, chúng là số. Đó là những gì tôi nhận được.

 
var countries = {"223":"142,143","222":"23,26,25,24","170":"1,2"}; 

Tôi cố gắng để truy cập dữ liệu như thế này:

 
var objKey = 223; (var objKey = "223";) 
countries.objKey; 

Tôi đã cố gắng thay đổi JSON để

 
var countries = {"country223":"142,143","country222":"23,26,25,24","country170":"1,2"}; 

... và truy cập nó như thế này:

 
var objKey = "country"+223; (var objKey = "country"+"223";) 
countries.objKey; 

... một lần nữa không có gì.

Mọi lời khuyên sẽ được đánh giá cao.

+0

Nó không hoạt động như thế. 'objKey' không phải là tài sản của các quốc gia. – mpen

Trả lời

34

Thay vì điều này:

countries.objKey; 

Làm điều này:

countries[objKey]; 

Với ký hiệu khung vuông, bạn có thể sử dụng giá trị tham chiếu trong một biến (hoặc sử dụng một chuỗi hoặc số) để tham khảo các tên tài sản.

+1

@patrick dw Tôi vẫn còn ở phần đầu của cuộc phiêu lưu JS của tôi :) – Jeffz

+0

... vì vậy các đối tượng JSON và JS trông giống như tôi. Nếu bạn nhìn vào chúng, chúng được xây dựng khá giống nhau. – Jeffz

+0

@ Jeffz: Tôi đã xóa một phần nhận xét đó vì tôi không chắc chắn ý của bạn là gì * "JSON được chuyển tới tập lệnh" *. Có lẽ nó đã bắt đầu như là JSON. Về cơ bản, dữ liệu JSON là định dạng trao đổi dữ liệu dựa trên văn bản. Nó chỉ xảy ra giống như các đối tượng javascript và mảng vì đó là những gì tiêu chuẩn được dựa trên. Nhưng nó thực sự không phải là JSON trừ khi nó chỉ là văn bản. Ví dụ, đây là một đối tượng theo nghĩa đen '{" a ":" b "}', nhưng đây là JSON hợp lệ ''{" a ":" b "}'' (chú ý các dấu ngoặc kép bên ngoài), có thể được phân tích thành đối tượng đầu tiên. – user113716

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