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

最 近在修改一个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"}]};

遍历的方法是:

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怎么办呢?这样做:

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;

}

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

时间: 2024-11-09 21:27:39

JSON对象长度和遍历方法(转)的相关文章

JSON对象长度和遍历方法

json数组有长度json.abc.length,如果单纯是json格式,那么不能直接使用json.length方式获取长度,而应该使用其他方法. 最近在修改一个html页面的JS的时候遍历JSON对象,却怎么也调试不通过.怪这个HTML网页不知道用了什么方法禁止了js错误提示,刚开始的时候不知道有这个问题,用chrome的开发人员工具都没发现错误,就是在获取 json.length的时候总是undefined,所以就以为自己定义的json方法不对.折腾了一个晚上一点进展都没有,头都整晕了,太晚

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

JSON对象与JSON数组的长度和遍历方法         1.json对象的长度与遍历                 结构:var json={“name”:”sm”,”sex”:”woman”}                 遍历的方法:for(var js2 in json){                                                 alert(js2 + “=” + json[js2]);                            

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

这篇文章主要介绍了VBScript把json字符串解析成json对象的2个方法,本文通过MSScriptControl.ScriptControl和jscript实现,需要的朋友可以参考下 asp/vbscript将json字符解析为json对象的方法,如果asp使用jscript来编写服务器端代码操作json字符串就简单了,vbscript需要MSScriptControl.ScriptControl或者服务器端的jscript来作为中间体才行. vbscript将json字符解析为json对

获取json对象长度

JSON对象变化万千,非常灵活,对应的获取方法分别为: 1.最简单类型的(myObject是对象,不是字符串哦) <script type="text/javascript"> var myObject = {'name':'Kasun', 'address':'columbo','age': '29'} var count = Object.keys(myObject).length console.log(count); </script> 在较老版本的浏览

javascript学习-创建json对象数据,遍历

之前我已经有讲过后台返回json数据到前台,并在前台遍历json数据. 这里讲下直接在JS里创建JSON数据,然后遍历使用~ 创建代码例如以下:(创建的是JSON对象) var YearSelect = {}; var Year = 2014; var DateOption; for (var i = Year; i < Year + 12; i++) { DateOption = {'Year':i, 'Month':i-Year+1}; // alert(DateOption.Year) Y

获取json对象长度的问题

平时,我们获取一些字符串或数组的长度的时候会使用length,例如: var str ="asdasd" console.log(str.length) //输出6 var arr =[1,'sd',3,{"s" : 1}]; console.log(arr.length) //输出4 有一次面试的时候,有条题目大概是这样的, var data = { "name" : 'abc', "age" : 25 } console.

javascript将字符串转化成json对象的3种方法

在JavaScript中,将字符串转化成json对象可以有3种方法. var str = '{"name":"yanggb", "age":18}'; 1.使用JSON.parse()方法. var json = JSON.parse(str); 2.使用eval()方法. var json = eval("(" + str + ")"); 3.使用new Function()方法. var json =

集合list里存储list,要遍历最底层list的对象元素的遍历方法

1 package com.wtd; 2 3 import java.util.ArrayList; 4 import java.util.HashSet; 5 import java.util.Iterator; 6 import java.util.List; 7 import java.util.Set; 8 9 public class L16 { 10 11 /** 12 * @desc 需要将list传到另个方法里怎么用list遍历userList和dpList? 13 * @par

获取json对象的长度

在我们日常前端开发中,经常会用到ajax请求json数据,而json数据有数组和对象2种表示结构,对象和数组.而获取json数组结构的长度比较容易,但json对象结构的长度就比较麻烦.而本文就是对如何获取json对象的长度进行说明. 在说明如何获取json对象之前,我们需要了解下原生javaScript中的hasOwnProperty()方法,这个方法可以检测一个属性是存在于实例中,还是存在于原型中.只要给定属性存在于对象实例中,才会返回true.来看一个简单的例子. // 原型模式创建对象 f