jQuery looping .each() JSON clave/valor no funciona

2 minutos de lectura

Tengo problemas para hacer un bucle de la clave/valor de JSON mediante la función jQuery .each()

Inicialmente tengo un JSON como este:

json = {"aaa":[
              {"id":"1","data":"aaa1data"}
              ,{"id":"2","data":"aaa2data"}
              ],
        "bbb":[
              {"id":"3","data":"bbb1data"}
              ]
       }

Y me gustaría recorrer todos los elementos clave/valor dentro del JSON (aaa y bbb) y recuperar las matrices JSON internas para volver a realizar el bucle, así que intenté

$(json).each(function(index,data)
{
    var zzz = data;
    $(zzz).each(function(index,data))
    {
       //some other stuff
    }
}

Sin embargo, descubrí que la primera función .each() considerará todo el json como una estructura única y no se repetirá en la clave de su elemento. El parámetro de datos recibido de la función .each() es siempre el json original. Nunca puedo obtener la referencia que apunta a la matriz JSON interna de aaa y bbb.

¿Cuál sería el problema aquí y cómo debo hacer un bucle para todos los elementos clave/valor en un JSON por jQuery correctamente?

avatar de usuario
Arun P Johny

Como tiene un objeto, no un contenedor jQuery, necesita usar una variante diferente de $.cada uno()

$.each(json, function (key, data) {
    console.log(key)
    $.each(data, function (index, data) {
        console.log('index', data)
    })
})

Manifestación: Violín

  • ¡Funciona! Gracias por su respuesta con la explicación ya que no sabía que $.each() y $(selector).each() no funcionan de la misma manera :).

    – pasador

    14 de noviembre de 2013 a las 5:09

  • @Arun p Johny – console.log('index', data) aquí los datos son parámetros o índice de matriz, se confunden con la palabra datos, si solo quiero un segundo valor, ¿cómo puedo obtenerlo? sin identificación?

    – 151291

    23 de diciembre de 2015 a las 9:15


  • mi json es { "0":{"tech_id":"35","tech_name":"Ajax"}, "1":{"tech_id":"36","tech_name":"Ajax"} }

    – 151291

    23 de diciembre de 2015 a las 9:38

Con un objeto JSON simple, no necesita jQuery:

for (var i in json) {
   for (var j in json[i]) {
     console.log(json[i][j]);
   }
}

¿Ha sido útil esta solución?