遍历JSON、获取JSON长度的方法

一、$.each遍历json对象

查看一个简单的jQuery的例子来遍历一个JavaScript数组对象。

var json = [
    {"id":"1","tagName":"apple"},
    {"id":"2","tagName":"orange"},
    {"id":"3","tagName":"banana"},
    {"id":"4","tagName":"watermelon"},
    {"id":"5","tagName":"pineapple"}
];
 
$.each(json, function(i, obj) {
    alert(obj.tagName);
});
上面的代码片断工作正常,提示 “apple”, “orange” … 等,如预期一样。


问题1: JSON 字符串。
下面的例子中,声明了一个JSON字符串(随附单或双引号)直接地。
var json = '[
	{"id":"1","tagName":"apple"},
	{"id":"2","tagName":"orange"},
	{"id":"3","tagName":"banana"},
	{"id":"4","tagName":"watermelon"},
	{"id":"5","tagName":"pineapple"}
	]';
 
$.each(json, function(i, obj) {
    alert(obj.tagName);
});
在Chrome中,它显示在控制台下面的错误:
Uncaught SyntaxError: Unexpected token ILLEGAL
解决方案:JSON字符串转换为JavaScript对象。
要修复它,通过标准JSON.parse()或jQuery 的 $.parseJSON 将其转换为JavaScript对象。
var json = '[
	{"id":"1","tagName":"apple"},
	{"id":"2","tagName":"orange"},
	{"id":"3","tagName":"banana"},
	{"id":"4","tagName":"watermelon"},
	{"id":"5","tagName":"pineapple"}
	]';
 
$.each(JSON.parse(json), function(i, obj) {
    alert(obj.tagName);
});
 
//or 
 
$.each($.parseJSON(json), function(i, obj) {
    alert(obj.tagName);
});

二、json数组有长度json.arrayname.length,如果单纯是json格式,那么不能直接使用json.length方式获取长度,而应该使用其他方法。(注: arrayname为数组名)
例1:
现在有json1数据如下:
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是没有该属性的。

例2:
现在有json2数据如下:
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;

}

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

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
易语言是一种面向过程的编程语言,虽然它对于遍历JSON数组的功能支持相对较弱,但我们可以通过自己实现遍历方法来处理。 首先,我们需要了解JSON数组的结构。JSON数组是由多个JSON对象组成,每个对象都有自己的键值对。在易语言中,我们可以用字符串来表示JSON数组。例如,一个包含两个JSON对象的数组可以表示为:"[{"name":"Tom","age":18},{"name":"Alice","age":20}]"。 我们可以通过以下步骤来遍历这个JSON数组: 1. 首先,将表示JSON数组的字符串赋值给一个变量,如jsonStr。 2. 接下来,先使用Split函数将jsonStr按照"]"分割成多个子字符串,得到一个字符串数组,记为subStrArray。 3. 创建一个循环,遍历subStrArray中的每一个子字符串。 4. 对于每个子字符串,我们需要使用IndexOf函数找到其中的键值对。首先使用IndexOf函数找到第一个"{"的位置,再使用IndexOf函数找到第一个"}"的位置,这样就得到了一个JSON对象的字符串,比如"{"name":"Tom","age":18}"。 5. 对于每个JSON对象的字符串,我们可以使用Split函数将其按照","分割成多个子字符串,得到一个字符串数组,记为kvArray。 6. 创建一个循环,遍历kvArray中的每一个子字符串。 7. 对于每个子字符串,使用Split函数将其按照":"分割成两个子字符串,分别表示键和值,得到一个长度为2的字符串数组,记为pairArray。 8. 在循环中,我们可以通过pairArray[0]获取到键,通过pairArray[1]获取到值。 9. 根据自己的需要,可以将键值对保存到变量中,或者进行其他操作。 通过以上步骤,我们可以遍历JSON数组中的每一个键值对。需要注意的是,由于易语言对于JSON的处理能力较弱,所以以上方法只适用于JSON数组结构比较简单的情况,如果JSON数组嵌套层次较深,以上方法可能会比较繁琐。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值