我有下面的JSON对象,我需要解析和填充值,只有列表中该对象的最后一个子对象可用。
{
"projectInfo": {
"cabinetInfo": [
{
"nodeName": "EAST",
"boxName": "EAST-Box",
"children": [
{
"nodeName": "Street-3",
"smsName": "smsname",
"boxserilaNumber": 4004342423
},
{
"nodeName": "Street-2",
"smsName": "smsname",
"boxserilaNumber": 4004342423
},
{
"nodeName": "Street-1",
"smsName": "smsname",
"boxserilaNumber": 4004342423
}
]
},
{
"nodeName": "NORTH",
"boxName": "NORTH-Box",
"children": [
{
"nodeName": "ZONE1",
"boxName": "ZONE1-Box",
"children": [
{
"nodeName": "AREA",
"boxName": "AREA-Box",
"children": [
{
"nodeName": "Street-3",
"smsName": "smsname",
"boxserilaNumber": 4004342423
},
{
"nodeName": "Street-2",
"smsName": "smsname",
"boxserilaNumber": 4004342423
},
{
"nodeName": "Street-1",
"smsName": "smsname",
"boxserilaNumber": 4004342423
}
]
}
]
}
]
},
{
"nodeName": "SOUTH",
"boxName": "SOUTH-Box",
"children": [
{
"nodeName": "ZONE1",
"boxName": "ZONE1-Box",
"children": [
{
"nodeName": "SOCIETY",
"boxName": "SOCIETY-Box",
"children": [
{
"nodeName": "AREA",
"boxName": "AREA-Box",
"children": [
{
"nodeName": "Street-4",
"smsName": "smsname",
"boxserilaNumber": 4004342423
},
{
"nodeName": "Street-3",
"smsName": "smsname",
"boxserilaNumber": 4004342423
},
{
"nodeName": "Street-2",
"smsName": "smsname",
"boxserilaNumber": 4004342423
},
{
"nodeName": "Street-1",
"smsName": "smsname",
"boxserilaNumber": 4004342423
}
]
}
]
}
]
}
]
}
]
}
}我在下面写了一段代码,但它打印的是3个boxserilaNumber,而它应该打印9个。我刚接触javascript,所以不能找出我在这里做错了什么,没有得到正确的输出。我认为问题出在renderCabinetInfoList方法中,我在该方法中进行递归调用以到达列表的底部,该列表具有子级
function renderCabinetInfo(nodeTree)
{
var cabinetLists = nodeTree.projectInfo.cabinetInfo;
for(var j=0;j<cabinetLists.length;j++)
{
var cabinetList = cabinetLists[j].children;
var cabinetInfoTags = renderCabinetInfoList(cabinetList);
var cTable=document.getElementById('cabinetInfoTable');
for(var i=0;i<cabinetInfoTags.length;i++)
{
console.log(cabinetInfoTags[i].boxserilaNumber);
}
}
};
function renderCabinetInfoList(cabinetList)
{
for(var i=0;i<cabinetList.length;i++)
{
var cabi = cabinetList[i];
if(haveChildren(cabi)) {
renderCabinetInfoList(cabi.children);
}
else
{
break;
}
}
return cabinetList=cabinetList;
}
function haveChildren(cabi)
{
if (null != cabi.children && cabi.children.length>0) {
return true;
}
return false;
}发布于 2020-09-03 03:53:10
示例JSON既不是数组,也不是有效的JSON。这可能是复制粘贴问题,请检查并更新您的问题。此外,还不清楚您期望的输出是什么。
有一个Array.flat()方法可以用来提取嵌套值。
https://stackoverflow.com/questions/63711494
复制相似问题