获取Json对象的长度

有两种Json形式:
第一种:

var json1 = {"data":[{"name":"zs","age":"10"}]};

对于这种格式的json数据,如果想获取data的长度,就可以用以下这种方式:

var length = json1.data.length;

但是如果想获取json的长度呢?看第二种格式

var json2 = {"name":"zs","age":"10"};

对于这种json格式,直接用json.length就是错误的。
但可以用遍历的方式:

function getJsonLength(jsonData) {

var length;
for(var ever in jsonData) {
length++;
}
return length;
}
有更好的办法,如下

简单获取json对象键长度的方法

之前有人问过我类似的问题,我想当然的说直接利用JSON.stringify()方法转化成字符串来获取字符串长度就可以了,但是后来有个问题需要用到获取json对象键长度的时候发现这个方法仅仅限于json的键长度相等,值长度也一一对应的情况,太过于局限,根本不实用,差了好些文档,找的两种方法,在这边整理一下,方便遇到同样问题的朋友来查看,也提醒自己记住这个问题。

第一种方法可能大部分人都能够想得到,就是利用for。。。in循环遍历json对象的键,如果json里面存在,则计数器加1,直到结束。代码如下:[此处代码和前述基本相同]

<script>

var json={“a”:1,“b”:2,“c”:3,“d”:4};
var count = 0;
for(var key in json){
if(json.hasOwnProperty(key)){
count++;
}
}
console.log(“json的键长度为”+count)
</script>
更简单的是
只需要通过Object.keys( )将json对象的键全部存到返回的数组中,调用length方法求长度可以,写起来较第一种更简单,代码如下:
<script>
var json={“a”:1,“b”:2,“c”:3,“d”:4};
var count = Object.keys(json).length;
console.log(“json的键长度为”+count);
</script>

发表评论

电子邮件地址不会被公开。 必填项已用*标注