关于javascript:如何迭代JSON结构?

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 dataArray:

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的forEach方法有一些非常相似的地方.forEach将函数作为参数。然后将为数组中的每个项调用该函数,并将所述项作为参数。

简约易懂:

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