我如何迭代JSON结构?

我有以下JSON结构:

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

如何使用jQuery或JavaScript迭代它?

采取从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("<br><br>array index: " + i); var obj = arr[i]; for (var key in obj){ var value = obj[key]; document.write("<br> - " + key + ": " + value); } } 

使用foreach

 <html> <body> <script type="text/javascript"> var mycars = [{name:'Susita'}, {name:'BMW'}]; for (i in mycars) { document.write(mycars[i].name + "<br />"); } </script> </body> </html> 

将导致:

 Susita BMW 

请让我知道如果不容易:

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

如果这是你的dataArray

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

然后:

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

mootools示例:

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

http://www.w3schools.com复制并粘贴,不需要JQuery开销。;

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

结果:John Doe 25

您可以使用像objx这样的小型图书馆 – http://objx.googlecode.com/

你可以这样写代码:

 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() 

有更多的“插件”可以让你处理这样的数据,请参阅http://code.google.com/p/objx-plugins/wiki/PluginLibrary

使用嵌套对象,可以通过recursion函数检索:

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

作为事件是json对象。

当使用jQuery时,Marquis Wang可能是最好的答案。

这里有一些非常类似的纯JavaScript,使用JavaScript的forEach方法。 forEach以一个函数作为参数。 然后将为该数组中的每个项目调用该函数,并将该项目作为参数。

简单又容易:

 <script> var results = [ {"id":"10", "class": "child-of-9"}, {"id":"11", "classd": "child-of-10"}]; results.forEach( function( item ) { console.log( item ); }); </script> 

这是一个纯粹的评论JavaScript的例子。

  <script language="JavaScript" type="text/javascript"> function iterate_json(){ // Create our XMLHttpRequest object var hr = new XMLHttpRequest(); // Create some variables we need to send to our PHP file hr.open("GET", "json-note.php", true);//this is your php file containing json hr.setRequestHeader("Content-type", "application/json", true); // Access the onreadystatechange event for the XMLHttpRequest object hr.onreadystatechange = function() { if(hr.readyState == 4 && hr.status == 200) { var data = JSON.parse(hr.responseText); var results = document.getElementById("myDiv");//myDiv is the div id for (var obj in data){ results.innerHTML += data[obj].id+ "is"+data[obj].class + "<br/>"; } } } hr.send(null); } </script> <script language="JavaScript" type="text/javascript">iterate_json();</script>// call function here 

另一种浏览JSON文档的解决scheme是JSONiq (在Zorba引擎中实现),您可以在其中编写如下内容:

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

你可以运行它http://www.zorba-xquery.com/html/demo#AwsGMHmzDgRpkFpv8qdvMjWLvvE=

 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);