计数JSON中的键

时间:2018-11-22 09:57:27

标签: json

这是我的json

    var json = {
    "pages": [{
        "name": "page1",
        "elements": [{
                "type": "text",
                "name": "question1"
            },
            {
                "type": "text",
                "name": "question2"
            },
            {
                "type": "text",
                "name": "question3"
            }
        ]
    }]
};

现在,我尝试使用此代码来计算json

var keyCount  = Object.keys(json).length;

console.log(keyCount);  

输出为1。

但是我所需要的就是数

  • {     “ type”:“文字”,     “ name”:“ question1”,    },

  • {     “ type”:“文字”,     “ name”:“ question2”,    },

  • {     “ type”:“文字”,     “ name”:“ question3”,    }

应该是3。 有人可以帮我吗?

  var json = {
 "pages": [
  {
   "name": "page1",
   "elements": [
    {
     "type": "text",
     "name": "question1",
    },
    {
     "type": "text",
     "name": "question2",
    },
    {
     "type": "text",
     "name": "question3",
    }
   ]
  },
  {
   "name": "page2",
   "elements": [
    {
     "type": "text",
     "name": "question4"
    },
    {
     "type": "text",
     "name": "question5"
    },
    {
     "type": "text",
     "name": "question6"
    }
   ]
  }
 ]
}

现在我有另一个问题。

您将看到“名称”:“ page1”,现在它具有page1,page2

当我计算页面时,它只返回3。

为什么返回的不是6

 var count = json.pages[0].elements.length
    console.log(count);

6来自

  • {“ type”:“ text”,“ name”:“ question1”,},
  • {“ type”:“ text”,“ name”:“ question2”,},
  • {“ type”:“ text”,“ name”:“ question3”,} 第1页的问题1-3)

  • {“ type”:“ text”,“ name”:“ question4”,},

  • {“ type”:“ text”,“ name”:“ question5”,},
  • {“ type”:“ text”,“ name”:“ question6”,} (第2页的问题4-6)

2 个答案:

答案 0 :(得分:2)

是的,因为您只有一个键:page。此外,页面是一个数组,因此您应该访问第一个单元格。

尝试在其中进行计数:

var count = json.pages[0].elements.length

我建议使用Jsoneditoronline来轻松查看JSON结构。

答案 1 :(得分:1)

您要计算elements属性下的元素数量。因此,您应该

var keyCount = Object.keys(json.pages[0].elements).length;

elements也是一个数组,所以

var keyCount = json.pages[0].elements.length

也可以。