首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript中的动态JSON解析

javascript中的动态JSON解析
EN

Stack Overflow用户
提问于 2020-09-03 02:22:52
回答 1查看 33关注 0票数 0

我有下面的JSON对象,我需要解析和填充值,只有列表中该对象的最后一个子对象可用。

代码语言:javascript
复制
        {
         "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方法中,我在该方法中进行递归调用以到达列表的底部,该列表具有子级

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

发布于 2020-09-03 03:53:10

示例JSON既不是数组,也不是有效的JSON。这可能是复制粘贴问题,请检查并更新您的问题。此外,还不清楚您期望的输出是什么。

有一个Array.flat()方法可以用来提取嵌套值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63711494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档