json
2017-06-13 119 views 0 likes 
0

我们如何遍历给JSON对象来遍历其所有属性:如何通过JSON对象循环?

<script type="text/javascript"> 
var students = '{"name": "John", "age": 30, "subjects": [{ "name": "IT", "marks": 85 }, { "name": "Maths", "marks": 75 }, { "name": "English", "marks": 60 }]}'; 

var myObj = JSON.parse(students); 
alert(myObj.name);     
alert(myObj.age);     
alert(myObj.subjects[0]['name']);     
alert(myObj.subjects[0]['marks']);     
alert(myObj.subjects[1]['name']);     
alert(myObj.subjects[1]['marks']);     
alert(myObj.subjects[2]['name']);     
alert(myObj.subjects[2]['marks']);     
</script> 

你可以看到我用它的索引和属性名访问嵌套的“主题”的属性。但是代码遍历每个项目变得冗长。为了避免它,我想知道如何通过编写单行代码来访问其所有属性来循环(例如,在循环中)?

回答

3

你可以这样做:

var myObj = JSON.parse(students); 
for(var index = 0; index < myObj.subjects.length; index++) {     
    alert(myObj.subjects[index]['name']);     
    alert(myObj.subjects[index]['marks']);     
} 
1

只需使用Each功能遍历每个科目

var students = '{"name": "John", "age": 30, "subjects": [{ "name": "IT", "marks": 85 }, { "name": "Maths", "marks": 75 }, { "name": "English", "marks": 60 }]}'; 
 

 
var myObj = JSON.parse(students); 
 

 

 
$.each(myObj['subjects'], function(index, value) { 
 
    console.log(value['name']+" "+ value['marks']); 
 
    
 
}); 
 
    
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

0

尝试使用字符串化

var myObj = JSON.stringify(students); 
for(var index=0;index < myObj.subjects.length;index++) { 
    alert (myObj.subjects[index]); 
} 
+0

错误:TypeError:myObj.subjects未定义 – user5307298

相关问题