2009-10-25 13 views
9

¿Cómo puedo acceder al nombre de un elemento en un Object Literal utilizando jQuery?jQuery access Objeto JSON

Por ejemplo ¿cómo iba a leer "título", "enlace", "medios", etc ... en este

{ 
    "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": "66405[email protected]", 
    "tags": "cat persian tnpurrs" 
}, 
+5

Por cierto, no es un arreglo asociativo * * * es un objeto literal * http://is.gd/4BdvZ – CMS

Respuesta

21

también puede utilizar la función $.each:

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

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

Si usted va para el estado for...in ción manera, te recomendaría que para comprobar si la propiedad reside directamente en el objeto que está siendo iterado, ya que podría tener someissues, si el Object.prototype se extiende:

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

(esto es javascript estándar, no jQuery-speficic)

+0

Esto es correcto, pero al igual @CMS mencionadas en su respuesta, siempre verifique si la clave es una propiedad de json y no propiedad del prototipo, de lo contrario, puede tener problemas. Simplemente marque 'if (json.hasOwnProperty (key) {// do stuff};'. – baltoro

2

En su caso, esto no es una array en absoluto! Desea recorrer las propiedades de un objeto.

JavaScript verdaderamente no admite Arays asociativos ya sea ... ver http://www.hunlock.com/blogs/Mastering_Javascript_Arrays

respuesta de Zed es perfecto, yo añadiría

alert(json[key]); 

dentro de la para, si usted se pregunta cómo obtener el valor de la propery

Gracias

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

si está solo objeto, entonces puede acceder a este por testObject.tags o testObject.title ... como esto

o se puede iterar por

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

Se puede acceder a uno sin el bucle si querías.

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