Javascript 使用节点js迭代json数组对象
我有一个任务要遍历包含json数组的复杂json文件。我无法从json文件访问数组对象 我需要从json访问类名对象 文件 classdetail.jsonJavascript 使用节点js迭代json数组对象,javascript,arrays,json,node.js,Javascript,Arrays,Json,Node.js,我有一个任务要遍历包含json数组的复杂json文件。我无法从json文件访问数组对象 我需要从json访问类名对象 文件 classdetail.json [ [ { "student" : [ { "name" : "AAaa", "class-name" : "A", "grade-label" : "AA" }, { "name" : "AAbb", "class-name" : "A", "gr
[ [ { "student" : [
{
"name" : "AAaa",
"class-name" : "A",
"grade-label" : "AA" },
{
"name" : "AAbb",
"class-name" : "A",
"grade-label" : "AB" },
{
"name" : "AAcc",
"class-name" : "A",
"grade-label" : "AB" },
{
"name" : "AAdd",
"class-name" : "B",
"grade-label" : "AA" } ],
"Average" : 2.5 },
{
"student" : [
{
"name" : "BBaa",
"class-name" : "B",
"grade-label" : "AB" },
{
"name" : "BBbb",
"class-name" : "B",
"grade-label" : "AA" },
{
"name" : "BBcc",
"class-name" : "B",
"grade-label" : "AA" },
{
"name" : "BBdd",
"class-name" : "B",
"grade-label" : "AA" } ],
"Average" : 2.5 } ] ]
iterate.js
var fs = require('fs');
var express = require('express');
var http = require('http');
var publicApis;
var item;
var subItem;
classmem = JSON.parse(fs.readFileSync("classdetail.json", "utf8"));
for (item in classmem) {
for (subItem in classmem[item]) {
console.log(classmem[item][subItem]);
}
}
按任意顺序迭代对象属性。它可能不是您想要用于数组的内容,数组按定义良好的顺序存储项。(尽管在这种情况下它应该可以工作)
尝试:
但是请阅读。首先检查值是否为数组,然后访问“类名”值
你犯了什么错误?一切正常
classmem[item][subItem]。student
是一个student数组。我没有收到任何错误,但我无法访问特定的json对象。如果我更改数组名称student data details而不是student,我会收到此错误“TypeError:Object#没有方法'forEach'”**el.student-data-details.forEach(函数(e,i,a)**如果我更改数组名student data details而不是student,我得到的错误为“data not defined”**el.student data details.forEach(函数(e,i,a)**您不能在变量名中使用减号。现在JS将其作为(el.student)-(data)-(details.forEach…)解决)
// iterate over `classmem`
classmem.forEach(function(element, index, array) {
// iterate over classmem[index], which is an array too
element.forEach(function(el, idx, arr) {
// classmem[index][idx] contains objects with a `.student` property
el.student.forEach(function(e, i, a) {
console.log(e["name"], e["class-name"], e["grade-label"]);
});
});
});
for (item in classmem) {
for (subItem in classmem[item]) {
var student = classmem[item][subItem].student;
for (row in student) {
console.log(student[row]['class-name']);
}
}
}
for (item in classmem) {
for (subItem in classmem[item]) {
**if (typeof classmem[item][subItem] === 'object') {
classmem[item][subItem].forEach(function (val, ind) {
console.log(val['class-name']);
});
}**
}
}