2009-10-25 2 views
9

Làm cách nào để truy cập tên của một mục trong một đối tượng Literal bằng jQuery?Truy cập jQuery đối tượng JSON

Ví dụ làm thế nào tôi sẽ đọc "title", "liên kết", "phương tiện truyền thông", vv ... trong này

{ 
    "title": "What we do in our free time...", 
    "link": "http://www.flickr.com/photos/tnhimmies/4042938515/", 
    "media": {"m":"http://farm3.static.flickr.com/2572/4042938515_3a00561320_m.jpg"}, 
    "date_taken": "2009-10-24T03:48:10-08:00", 
    "description": "<p><a href=\"http://www.flickr.com/people/tnhimmies/\">Darlene, TN Persians (www.tnpurrs.com)<\/a> posted a photo:<\/p> <p><a href=\"http://www.flickr.com/photos/tnhimmies/4042938515/\" title=\"What we do in our free time...\"><img src=\"http://farm3.static.flickr.com/2572/4042938515_3a00561320_m.jpg\" width=\"240\" height=\"230\" alt=\"What we do in our free time...\" /><\/a><\/p> <p>Tennessee Persians<br /> <a href=\"http://www.tnpurrs.com\" rel=\"nofollow\">www.tnpurrs.com<\/a><\/p>", 
    "published": "2009-10-25T18:28:36Z", 
    "author": "[email protected] (Darlene, TN Persians (www.tnpurrs.com))", 
    "author_id": "[email protected]", 
    "tags": "cat persian tnpurrs" 
}, 
+5

BTW, nó không phải là một mảng kết hợp * * là một * Object Literal * http://is.gd/4BdvZ – CMS

Trả lời

21

bạn cũng có thể sử dụng chức năng $.each:

var obj = { one:1, two:2, three:3, four:4, five:5 }; 

$.each(obj, function(key, value) { 
    //.. 
}); 

Nếu bạn đi cho tình trạng for...in ment cách nào, tôi sẽ khuyên bạn nên kiểm tra xem tài sản nằm trực tiếp trên đối tượng được lặp, bởi vì bạn có thể có someissues, nếu Object.prototype được mở rộng:

for(var key in obj) { 
    if (obj.hasOwnProperty(key)){ 
    // value = obj[key]; 
    } 
} 
9
for (var key in json) { 
    // ... 
} 

(đây là javascript tiêu chuẩn, không jQuery-speficic)

+0

này là đúng nhưng cũng giống như @CMS đề cập trong câu trả lời của mình, luôn luôn kiểm tra xem chủ chốt là tài sản của json và không phải là tài sản của nguyên mẫu, nếu không bạn có thể gặp vấn đề. Chỉ cần kiểm tra 'if (json.hasOwnProperty (key) {// do stuff};'. – baltoro

2

Trong trường hợp của bạn, điều này không phải là một mảng ở tất cả! Bạn muốn lặp qua các thuộc tính của một đối tượng.

JavaScript không thực sự hỗ trợ Arays kết hợp một trong hai ... thấy http://www.hunlock.com/blogs/Mastering_Javascript_Arrays

câu trả lời Zed là hoàn hảo, tôi sẽ thêm

alert(json[key]); 

bên trong cho, nếu bạn tự hỏi làm thế nào để có được giá trị của propery

Cảm ơn

0
var testObject = { 
    "title": "What we do in our free time...", 
    "link": "http://www.flickr.com/photos/tnhimmies/4042938515/", 
    "media": {"m":"http://farm3.static.flickr.com/2572/4042938515_3a00561320_m.jpg"}, 
    "date_taken": "2009-10-24T03:48:10-08:00", 
    "description": "<p><a href=\"http://www.flickr.com/people/tnhimmies/\">Darlene, TN Persians (www.tnpurrs.com)<\/a> posted a photo:<\/p> <p><a href=\"http://www.flickr.com/photos/tnhimmies/4042938515/\" title=\"What we do in our free time...\"><img src=\"http://farm3.static.flickr.com/2572/4042938515_3a00561320_m.jpg\" width=\"240\" height=\"230\" alt=\"What we do in our free time...\" /><\/a><\/p> <p>Tennessee Persians<br /> <a href=\"http://www.tnpurrs.com\" rel=\"nofollow\">www.tnpurrs.com<\/a><\/p>", 
    "published": "2009-10-25T18:28:36Z", 
    "author": "[email protected] (Darlene, TN Persians (www.tnpurrs.com))", 
    "author_id": "[email protected]", 
    "tags": "cat persian tnpurrs" 
}; 

nếu nó là đối tượng duy nhất sau đó bạn có thể truy cập này bằng cách testObject.tags hoặc testObject.title ... như thế này

hoặc bạn có thể lặp lại bởi

$.each(obj,function(key,value){ 
/// 
}); 
0

Bạn có thể truy cập mà không cần mỗi vòng lặp nếu bạn muốn.

var obj = JSON.parse(data); 
var title = obj[0].title;