摘自博客 (http://caibaojian.com/json-length.html)

原文链接:http://caibaojian.com/json-length.html

JSON数组有长度json.abc.length,如果单纯是json格式,那么不能直接使用json.length方式获取长度,而应该使用其他方法。

最近在修改一个html页面的JS的时候遍历JSON对象,却怎么也调试不通过。怪这个HTML网页不知道用了什么方法禁止了js错误提示,刚开始的时候不知道有这个问题,用chrome的开发人员工具都没发现错误,就是在获取 json.length的时候总是undefined,所以就以为自己定义的json方法不对。折腾了一个晚上一点进展都没有,头都整晕了,太晚,最后失望地洗洗睡了。

第二天晚上就是不甘心这个小问题能难倒我,于是静下心来仔细查原因。自己新建一个空的HTML文件在其中测试,发现JSON对象根本没有length属性,在搜索引擎查找也没有比较权威的参考文档提到json有这个属性。博客也很少有提到 json.length 的。但是奇怪的是我明明记得json有length,我还用过,程序没错,正确运行。

那是怎么回事呢?最后看某博客一篇文章的时候回想起以前编程的细节,记得以前的json的子对象是个数组而这次的不是,这下终于恍然大悟了。

以前我使用json的这样的结构:

var json1={"abc":[{"name":"txt1"},{"name","txt2"}]};

via遍历的方法是:原文来自:http://caibaojian.com/json-length.html

for(var i=0;i<json1.abc.length;i++){alert(json1.abc[i].name);}

这里的json1.abc是一个数组,数组是由2个子json组成的,数组是有length属性的,所以说能工作。

而我这一次的json是这样的:

var json2={"name":"txt1","name2":"txt2"};

而json本身没有length属性,所以用length属性自然会出错:

for(var i=0;i<json2.length;i++){alert(json2[i].text);}

那么要遍历这样的json怎么办呢?这样做:

//code from http://caibaojian.com/json-length.html
for(var js2 in json2){ alert( js2+"="+json2[js2]); }

既然json没有length属性,如果要知道他的长度怎么办呢?很简单,把上面的遍历改一下就是了:

var jslength=0;

for(var js2 in json2){

jslength++;

}

把这段代码写成一个方法,以后调用就行了:

function getJsonLength(jsonData){

var jsonLength = 0;

for(var item in jsonData){

jsonLength++;

}

return jsonLength;

}

学习计算机编程技术一定要严谨认真,容不得半点马虎,学习最重要是把基础打牢,囫囵吞枣、不求甚解会给工作和学习带来很多隐患,效率上必须打折扣。写下来以自勉!

JSON对象长度和遍历方法的更多相关文章

  1. (转)JSON对象长度和遍历方法

    最近在修改一个HTML页面的JS的时候遍历JSON对象,却怎么也调试不通过.怪这个HTML网页不知道用了什么方法禁止了js错误提示,刚开始的时候不知道有这个问题,用chrome的开发人员工具都没发现错 ...

  2. JSON对象长度和遍历方法(转)

    最 近在修改一个HTML页面的JS的时候遍历JSON对象,却怎么也调试不通过.怪这个HTML网页不知道用了什么方法禁止了js错误提示,刚开始的时候不 知道有这个问题,用chrome的开发人员工具都没发 ...

  3. javascript中json对象长度

    JSON中无法使用length去获取长度,length只针对数组对象适用: var data={"showdata":{"中国人民大学":{"2013 ...

  4. JSON对象与JSON数组的长度和遍历方法

    JSON对象与JSON数组的长度和遍历方法         1.json对象的长度与遍历                 结构:var json={“name”:”sm”,”sex”:”woman”} ...

  5. JSON对象的两个方法

    JSON对象有两个方法,stringify()和parse(). 最简单的方法,这两个方法分别用于吧JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript值. ...

  6. VBScript把json字符串解析成json对象的2个方法

    这篇文章主要介绍了VBScript把json字符串解析成json对象的2个方法,本文通过MSScriptControl.ScriptControl和jscript实现,需要的朋友可以参考下 asp/v ...

  7. 获取json对象长度

    JSON对象变化万千,非常灵活,对应的获取方法分别为: 1.最简单类型的(myObject是对象,不是字符串哦) <script type="text/javascript" ...

  8. 获取json对象长度的问题

    平时,我们获取一些字符串或数组的长度的时候会使用length,例如: var str ="asdasd" console.log(str.length) //输出6 var arr ...

  9. C# 反射(GetType) 获取动态Json对象属性值的方法

    之前在开发一个程序,希望能够通过属性名称读取出属性值,但是由于那时候不熟悉反射,所以并没有找到合适的方法,做了不少的重复性工作啊! 然后今天我再上网找了找,被我找到了,跟大家分享一下. 其实原理并不复 ...

随机推荐

  1. Strom的配置安装

    1.准备环境 1.1配置列表 配置项 版本信息 OS Red Hat   Enterprise Linux Server release 5.5 (Tikanga) IP 192.168.1.191/ ...

  2. 【5集iCore3_ADP演示视频】5-2 iCore3应用开发平台上电及注意事项

    iCore3双核心应用开发平台基于iCore3双核心板,包含ARM.FPGA.7寸液晶屏.双通道数字示波器.任意波发生器.电压表等模块,是一款专为电子爱好者设计的综合性电子学习系统. [视频简介]本视 ...

  3. Public DNS (公共域名解析服务)

    114DNS 服务IP:114.114.114.114, 114.114.115.115 拦截 钓鱼病毒木马网站:114.114.114.119, 114.114.115.119 拦截 色情网站:11 ...

  4. How to inspect who is caller of func and who is the class of instance

    1. Who is the class of self instance ? class aa(object): def a(self): if self.__class__.__name__ == ...

  5. input range样式更改,模拟滑块

    input range 样式更改,js模拟滑块实时更新数据. 效果图: html 代码: <div> <span class="slider"></s ...

  6. ORM系列之二:EF(2)Code First

    目录 1. Code First是什么? 2. Code First 简单示例 3. 数据存储 4. 迁移 Code First是什么 Code First 顾名思义就是先写代码,当然不是乱写,而是按 ...

  7. SVM经典论文

    1. P. H. Chen, C. J. Lin, and B. Schölkopf, A tutorial on ν-support vector machines, Appl. Stoch. Mo ...

  8. windows + python + dlib

    我试了网上的各种教程,结果都是屁话 pip install dlib

  9. swift:谈谈swift几种常见属性的区别

    一.前奏 Swift作为一门新语言,经过几年的发展,逐渐趋于完善,目前已经更新到3.0版本,它汇集许多其他语言的特点,例如JS.Paython.C++等,完全区别于OC.个人感觉它没有完全的OOP和O ...

  10. linq操作文件方法

    备忘 string directory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); List<File ...