Javascript 如何迭代JSON结构?

Javascript 如何迭代JSON结构?,javascript,json,loops,Javascript,Json,Loops,我有以下JSON结构: [{ "id":"10", "class": "child-of-9" }, { "id": "11", "classd": "child-of-10" }] 如何使用JavaScript对其进行迭代?摘自: mootools示例: var ret = JSON.decode(jsonstr); ret.each(function(item){ alert(item.id+'_'+item.classd); }); 您可以使用小型库,如objx- 您可以编写

我有以下JSON结构:

[{ "id":"10", "class": "child-of-9" }, { "id": "11", "classd": "child-of-10" }]
如何使用JavaScript对其进行迭代?

摘自:

mootools示例:

var ret = JSON.decode(jsonstr);

ret.each(function(item){
    alert(item.id+'_'+item.classd);
});

您可以使用小型库,如objx-

您可以编写如下代码:

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()
有更多的“插件”可供您处理此类数据,请参见
var arr=[{“id”:“10”,“class”:“child-of-9”},{“id”:“11”,“class”:“child-of-10”}];
对于(变量i=0;i
数组索引:”+i); var obj=arr[i]; for(obj中的var键){ var值=obj[键]; 文件。写入(“
-”+键+”:“+值); }
}
使用表示……的

var mycars=[{name:'Susita'},{name:'BMW'}];
用于(mycars的var car)
{
文件。写入(car.name+“
”);
}
另一种浏览JSON文档的解决方案是(在引擎中实现),您可以在其中编写如下内容:

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" :)

如果这是您的
数据数组,您可以在上运行它:

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


对于嵌套对象,可以通过递归函数检索:

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

其中as events是json对象。

这是一个纯注释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

函数iterate_json(){
//创建XMLHttpRequest对象
var hr=新的XMLHttpRequest();
//创建一些我们需要发送到PHP文件的变量
open(“GET”,“json note.php”,true);//这是包含json的php文件
hr.setRequestHeader(“内容类型”,“应用程序/json”,true);
//访问XMLHttpRequest对象的onreadystatechange事件
hr.onreadystatechange=函数(){
如果(hr.readyState==4&&hr.status==200){
var data=JSON.parse(hr.responseText);
var results=document.getElementById(“myDiv”);//myDiv是div id
for(数据中的var obj){
results.innerHTML+=数据[obj].id+“是”+数据[obj].class+“
”; } } } hr.send(空); } 迭代_json();//在这里调用函数
使用jQuery时,王侯爵的答案可能是最好的

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

简单明了:

var results=[{“id”:“10”,“class”:“child-of-9”},{“id”:“11”,“classd”:“child-of-10”}];
结果。forEach(功能(项目){
控制台日志(项目);

});如果不容易,请告诉我:

var jsonObject = {
  name: 'Amit Kumar',
  Age: '27'
};

for (var prop in jsonObject) {
  alert("Key:" + prop);
  alert("Value:" + jsonObject[prop]);
}
var jsonString=`{
“模式”:{
“标题”:“用户反馈”,
“说明”:“所以”,
“类型”:“对象”,
“财产”:{
“姓名”:{
“类型”:“字符串”
}
}
},
“选择”:{
“表格”:{
“属性”:{},
“按钮”:{
“提交”:{
“标题”:“它”,
单击“:“函数(){alert('hello');}”
}
}
}
}
}`;
var jsonData=JSON.parse(jsonString);
函数迭代(数据)
{
每个(数据、函数(索引、值){
如果(值的类型=='object'){
警报(“对象”+索引);
迭代(值);
}
否则{
警报(索引+“:”+值);
}
});
}
迭代(jsonData)
从中复制和粘贴,不需要JQuery开销

var person = {fname:"John", lname:"Doe", age:25};

var text = "";
var x;
for (x in person) {
    text += person[x];
}


结果:John Doe 25

Susita是一个文化因变量,对吗?:-)对,一个顶级变量,如BMW;-)这是一个常规数组,而不是JSON。@SachinPrasad不,
i
是一个属性名。既适用于数组,也适用于JSON。这是一个非常混乱的语法。你能解释一下吗?您还可以提供输出吗?答案应该是用JavaScript给出的,而不是JQuery。@WayneHartman我同意您的观点,但最初的问题是“JQuery或JavaScript”。似乎错误在于问题上没有JQuery标记。类似地,lodash提供了(别名)为了达到同样的目的,OP要求使用jQuery或JavaScript,因此答案适合我的书《jQuery或JavaScript》?jquery是用javascript编写的!它应该是“jQuery或纯JavaScript”。“我如何迭代JSON结构?”您不需要。你解析它,这样你就不再有JSON了,你使迭代器IIFE具有预定义的(基本的)DepthFirst和BreadthFirst-next,并且能够在JSON结构中移动而不需要递归。太好了。只是想提一下;如果你读出(i)变量,你可以得到属性名(不管它值多少),别忘了在你的
for key in obj
循环中检查
obj.hasOwnProperty(key)
——否则有一天你可能会发现其他键进入你不想要的
obj
,例如,如果有人扩展了原型…嗨,我能问一下我是否想用它来获得一个远程json数组,我该怎么做?请给我一些指导@AlexanderSupertramp它是使用数组文字符号和对象文字符号中的对象设置的。在JavaScript中,数组本质上也是对象。因此,我仍然会提到arr是使用JSON设置的。@devios那么,使用DOM对象的智能解决方案是什么呢?@musicformellons指的是现代方法(IE不支持)。您的jsonObject不是真正的JSON对象。它是一个javascript对象。这就是为什么这是有效的。但是,如果任何人有一个JSON对象,他可以将其转换为JS对象,然后使用您的方法。要将JSON对象转换为JS对象,请使用jsObject=JSON.parse(jsonObject);如果您是通过jQuery.getJSON()获取数据的,那么这很好。最好使用jQuery。我使用AJAX从后端编码数据,所以我没有使用“stringify”函数。代码清晰明了
var jsonObject = {
  name: 'Amit Kumar',
  Age: '27'
};

for (var prop in jsonObject) {
  alert("Key:" + prop);
  alert("Value:" + jsonObject[prop]);
}
var person = {fname:"John", lname:"Doe", age:25};

var text = "";
var x;
for (x in person) {
    text += person[x];
}