How do I iterate over a JSON structure?
本问题已经有最佳答案,请猛点这里访问。
我有以下JSON结构:
1 | [{"id":"10","class":"child-of-9" }, {"id":"11","classd":"child-of-10" }] |
如何使用jquery或javascript迭代它?
1 2 3 4 5 6 7 8 9 10 11 12 | var arr = [ {"id":"10","class":"child-of-9 <div class="suo-content">[collapse title=""]<ul><li>别忘了在你的<wyn>for key in obj</wyn>循环中检查<wyn>obj.hasOwnProperty(key)</wyn>的正确性,否则有一天你可能会发现其他的键在你不想要的<wyn>obj</wyn>中工作,如果有人扩展了原型,例如…</li><li>嗨,我能问一下我是否想用这个来获取远程JSON数组吗?我该怎么做?请给我一些指导!</li><li>但arr不是json。</li><li>@AlexandersupertRamp它是使用数组文字表示法和对象文字表示法设置的。在JavaScript中,数组本质上也是对象。所以我仍然会提到arr是使用json设置的。</li><li>@Devios那么,对于一个dom对象,什么是智能解决方案呢?</li><li>@MusicFormellons是指developer.mozilla.org/en/docs/web/javascript/reference/&hellip;,以了解现代方法(IE不支持)。</li><li>杰出的。不需要额外的库。</li><li>永远不要!-使用for…in循环枚举数组。</li><li>"for-in"出现在数组的每个项中的嵌套对象上,而不是迭代数组本身。</li></ul>[/collapse]</div><hr><P>取自jquery文档:</P>[cc lang="javascript"]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)); }); |
Use foreach:
1 2 3 4 5 6 7 8 9 10 11 | <html> <body> <script type="text/javascript"> var mycars = [{name:'Susita'}, {name:'BMW'}]; for (i in mycars) { document.write(mycars[i].name +"<br />"); } </body> </html> |
将导致:
1 2 | Susita BMW |
Please let me know if it is not easy:
1 2 3 4 5 6 7 8 | var jsonObject = { name: 'Amit Kumar', Age: '27' }; for (var prop in jsonObject) { alert("Key:" + prop); alert("Value:" + jsonObject[prop]); } |
If this is your
1 2 3 4 5 6 | var dataArray = [{"id":28,"class":"Sweden <div class="suo-content">[collapse title=""]<ul><li>使用jquery的最佳答案。我使用Ajax对来自后端的数据进行编码,所以没有使用"stringify"函数。代码清晰漂亮!</li></ul>[/collapse]</div><hr><P>moootools示例:</P>[cc lang="javascript"]var ret = JSON.decode(jsonstr); ret.each(function(item){ alert(item.id+'_'+item.classd); }); |
从http://www.w3schools.com复制粘贴,不需要jquery开销。
1 2 3 4 5 6 7 | 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/
您可以这样编写代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | var data = [ {"id":"10","class":"child-of-9 <hr><P>这是一个纯注释的javascript示例。</P>[cc lang="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 language="JavaScript" type="text/javascript">iterate_json();// call function here |
With nested objects, it can be retrieve as by recursive function:
1 2 3 4 5 6 7 8 9 10 | function inside(events) { for (i in events) { if (typeof events[i] === 'object') inside(events[i]); else alert(events[i]); } } inside(events); |
其中as事件是json对象。
使用jquery时,王侯爵的回答可能是最好的。
在纯javascript中,使用javascript的
简约易懂:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | var results = [ {"id":"10","class":"child-of-9 <p><center>[wp_ad_camp_3]</center></p><hr><P>浏览JSON文档的另一个解决方案是JSONiQ(在Zorba引擎中实现),在这里您可以编写如下内容:</P>[cc lang="javascript"]jsoniq version"1.0"; let $doc := [ {"id":"10","class":"child-of-9 <hr>[cc lang="javascript"]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); |