Iterar objeto JSON

Tengo el siguiente objeto JSON:

{
  "a1_1_on" : "on",
  "a1_1_thr" : "",
  "a1_2_on" : "on",
  "a1_2_thr" : "",
}

y quiero usar un bucle for para verificar los campos, por ejemplo:

for (var i=1; i<2; i++) {
    //alarm
    var al = 'ai_' + i + '_on';
    //alarm threshold
    var althr = 'ai_' + i + '_thr'

    //console.log(form_infos.al);

    if(form_infos.al == "on" && form_infos.althr == "") {
        alert("Alarm for Analog " + i + "is on and you did not specified a threshold. Please specify a threshold before submittiing");
        return false;
    }
}

Pero se nota undefined si lo hago console.log(form_infos.al). ¿Alguna sugerencia?

preguntado el 31 de julio de 12 a las 11:07

@RoyiNamir - No lo es, porque no es válido. Él = los caracteres deben ser dos puntos. -

@JamesAllardice sí. (No me di cuenta. Empecé a ver que no era una cuerda en absoluto. -

Pero como chicos? Si lo hago form.infos.a1_1.on vuelve on -

Sí, quys considéralo un objeto JSON. cometí un error con = en lugar de : -

Utilice las form_infos[on] en lugar de form_infos.on porque en el primer caso el on parte será tratada como una variable y la búsqueda irá a form_infos['ai_1_on'] o lo que sea. -

2 Respuestas

Hay varios errores en su código.

Nombre de todos, en JSON ':' se usa entre clave y valor, por lo que tiene que ser

{
  "a1_1_on": "on",
  "a1_1_thr": "",
  "a1_2_on": "on",
  "a1_2_thr": "",
}

por cierto, esto no es JSON, sino un objeto Javascript simple. JSON sería la representación de cadena de ese objeto.

Segundo, su cadena para indexar los elementos tiene un error tipográfico, tiene

 "a1..."

en tu Objeto pero usas

 var al = 'ai_' + i + '_on';

en tu código (i en lugar de 1)

Tercero, al no es un subobjeto de form_infos, sino una variable que contiene una cadena. Para acceder a un subobjeto con un uso de índice de cadena

form_infos[al]

en lugar de

form_infos.al

Eso es

Respondido 31 Jul 12, 11:07

Usaría jQuery para esto. Por ejemplo:

var obj = {
  "a1_1_on" : "on",
  "a1_1_thr" : "",
  "a1_2_on" : "on",
  "a1_2_thr" : ""
}

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

jQuery cada referencia

Respondido 31 Jul 12, 11:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.