Como faço para iterar em uma estrutura JSON?

Eu tenho a seguinte estrutura JSON:

[{ "id":"10", "class": "child-of-9" }, { "id": "11", "classd": "child-of-10" }] 

Como faço para iterar usando jQuery ou JavaScript?

Extraído de documentos do jQuery :

 var arr = [ "one", "two", "three", "four", "five" ]; var obj = { one:1, two:2, three:3, four:4, five:5 }; jQuery.each(arr, function() { $("#" + this).text("My id is " + this + "."); return (this != "four"); // will stop running to skip "five" }); jQuery.each(obj, function(i, val) { $("#" + i).append(document.createTextNode(" - " + val)); }); 
 var arr = [ {"id":"10", "class": "child-of-9"}, {"id":"11", "classd": "child-of-10"}]; for (var i = 0; i < arr.length; i++){ var obj = arr[i]; for (var key in obj){ var attrName = key; var attrValue = obj[key]; } } 
 var arr = [ {"id":"10", "class": "child-of-9"}, {"id":"11", "class": "child-of-10"}]; for (var i = 0; i < arr.length; i++){ document.write("

array index: " + i); var obj = arr[i]; for (var key in obj){ var value = obj[key]; document.write("
- " + key + ": " + value); } }

Use foreach :

      

Vai resultar em:

 Susita BMW 

Por favor, deixe-me saber se não é fácil:

  var jsonObject = { name: 'Amit Kumar', Age: '27' }; for (var prop in jsonObject) { alert("Key:" + prop); alert("Value:" + jsonObject[prop]); } 

Se este é seu dataArray :

 var dataArray = [{"id":28,"class":"Sweden"}, {"id":56,"class":"USA"}, {"id":89,"class":"England"}]; 

então:

 $(jQuery.parseJSON(JSON.stringify(dataArray))).each(function() { var ID = this.id; var CLASS = this.class; }); 

mootools exemplo:

 var ret = JSON.decode(jsonstr); ret.each(function(item){ alert(item.id+'_'+item.classd); }); 

Copiado e colado de http://www.w3schools.com , não há necessidade de sobrecarga da JQuery.

 var person = {fname:"John", lname:"Doe", age:25}; var text = ""; var x; for (x in person) { text += person[x]; } 

RESULTADO: John Doe 25

Você pode usar uma mini biblioteca como objx – http://objx.googlecode.com/

Você pode escrever código como este:

 var data = [ {"id":"10", "class": "child-of-9"}, {"id":"11", "class": "child-of-10"}]; // alert all IDs objx(data).each(function(item) { alert(item.id) }); // get all IDs into a new array var ids = objx(data).collect("id").obj(); // group by class var grouped = objx(data).group(function(item){ return item.class; }).obj() 

Existem mais ‘plugins’ disponíveis para permitir que você gerencie dados como este, consulte http://code.google.com/p/objx-plugins/wiki/PluginLibrary

Este é um exemplo de JavaScript com comentários puros.

   // call function here 

Com objects nesteds, pode ser recuperado como por function recursiva:

 function inside(events) { for (i in events) { if (typeof events[i] === 'object') inside(events[i]); else alert(events[i]); } } inside(events); 

onde como events é object json.

Marquês Wang pode muito bem ser a melhor resposta ao usar o jQuery.

Aqui está algo bastante semelhante em JavaScript puro, usando o método forEach do JavaScript. forEach assume uma function como um argumento. Essa function será então chamada para cada item na matriz, com o item mencionado como o argumento.

Curto e fácil:

  

Outra solução para navegar pelos documentos JSON é o JSONiq (implementado no mecanismo do Zorba ), onde você pode escrever algo como:

 jsoniq version "1.0"; let $doc := [ {"id":"10", "class": "child-of-9"}, {"id":"11", "class": "child-of-10"} ] for $entry in members($doc) (: binds $entry to each object in turn :) return $entry.class (: gets the value associated with "class" :) 

Você pode executá-lo em http://try.zorba.io/

 var jsonString = "{\"schema\": {\"title\": \"User Feedback\", \"description\":\"so\", \"type\":\"object\", \"properties\":{\"name\":{\"type\":\"string\"}}}," + "\"options\":{ \"form\":{\"attributes\":{}, \"buttons\":{ \"submit\":{ \"title\":\"It\", \"click\":\"function(){alert('hello');}\" }}} }}"; var jsonData = JSON.parse(jsonString); function Iterate(data) { jQuery.each(data, function (index, value) { if (typeof value == 'object') { alert("Object " + index); Iterate(value); } else { alert(index + " : " + value); } }); }; Iterate(jsonData);