2010-10-25 16 views
10

Tengo el siguiente json como se ve a continuación. Estoy tratando de leer los valores TOP1, TOP2. Estoy un poco inseguro de cómo hacer esto.jquery lectura json anidado

Estoy usando lo siguiente ... Pero eso solo me da un objeto que tiene los objetos anidados para TOP1 y TOP2. ¿Cómo obtengo los valores TOP1 y TOP2?

$.getJSON('http://localhost/data/menufixed.json', 
    function(data) {    
     $.each(data, function(entryIndex, entry) { 
      var html = '<li class="top-level">'; 

     }); 
    }); 

Y los datos siguientes

{ 
"actions" : [ 
    { 
     "action": "TOP1", 
     "subaction": [ 
      { 
       "name": "A" 
      }, 
      { 
       "name": "B" 
      }, 
      { 
       "name": "C" 
      } 
     ] 
    }, 
    { 
     "action": "TOP2", 
     "subaction": [ 
      { 
       "name": "X" 
      }, 
      { 
       "name": "Y" 
      } 
     ] 

Respuesta

11

Parece que desea bucle aunque el .actions, por lo que cambiar esta situación:

$.each(data, function(entryIndex, entry) { 
    var html = '<li class="top-level">'; 
}); 

A esto:

$.each(data.actions, function(entryIndex, entry) { 
    var html = '<li class="top-level">' + this.action + '</li>'; 
}); 

Usando data.actions ahora está recorriendo ese conjunto de objetos, y esos objetos son los que tienen la propiedad .action, por ejemplo: "TOP1" y "TOP2".

+0

Esto es lo que estoy agradecido Nick! ¿Cómo podría acceder a los datos de ABC/YX? – wmitchell

+4

@imerez - * Dentro * de la devolución de llamada '$ .each()' anterior, harías '$ .each (this.subaction, function() {alert (this.name);});', eso te daría A, B, C, etc. - pruébelo aquí: http://www.jsfiddle.net/nick_craver/mHvvA/2/ –

+0

Gracias, eso es lo que estoy buscando ... gracias por el excelente recurso jsfiddle también: P – wmitchell