2009-10-25 12 views
9

Come accedere al nome di un oggetto in un oggetto letterale utilizzando jQuery?jQuery access JSON Object

Ad esempio, come leggevo "link" "title", "media", ecc ... in questo

{ 
    "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, non è un array associativo * * * è un letterale oggetto * http://is.gd/4BdvZ – CMS

risposta

21

È anche possibile utilizzare la funzione $.each:

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

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

Se si va per lo stato for...in modo mento, mi sento di raccomandare di verificare se la proprietà si trova direttamente sull'oggetto essere iterato, perché si potrebbe avere someissues, se l'Object.prototype è esteso:

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

(questo è javascript standard, non jQuery-speficic)

+0

Questo è corretto, ma proprio come @CMS menzionati nella sua risposta, sempre verificare se la chiave è una proprietà di json e non è una proprietà del prototipo, altrimenti è possibile incorrere in problemi. Basta selezionare 'if (json.hasOwnProperty (key) {// do stuff};'. – baltoro

2

Nel tuo caso, questo non è un allineamento a tutti! Si desidera eseguire il ciclo attraverso le proprietà di un oggetto.

JavaScript non supporta realmente Arays associative o ... vedere http://www.hunlock.com/blogs/Mastering_Javascript_Arrays

risposta di Zed è perfetto, vorrei aggiungere

alert(json[key]); 

all'interno del per, se vi chiedete come ottenere il valore della propery

Grazie

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" 
}; 

se è singolo oggetto poi si può accedere a questo da testObject.tags o testObject.title ... Ti piace questa

o si può iterare da

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

È possibile accedere senza ogni ciclo se si voleva.

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