在jsp页面解析jsonarray

你说的曾经没有我的故事 提交于 2019-11-28 05:08:17

                              在jsp页面解析jsonarray


首先需要将后台传过来的json串转成json对象:

jsonData=eval("("+data+")");  //或者 var jsonData = eval(data);

然后将该json对象循环遍历将其中的数据取出来

1、什么是eval函数
eval()是一个函数,有且只有一个参数string,为字符串类型

eval(string)

特点:若string为js代码时,会直接解析执行,若是普通字符串,则返回原字符串。
2、eval解析json数据
错误实例:

var jsonstr = "{name:'test',age:18}";

var jsonobj = eval(jsonstr);//拼接过程

3、错误提示:

SyntaxError: invalid label

为什么会这样?

原因在于:eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句 (statement)来执行。
 

4、如何解决?

var josnobj = eval("("+jsonstr+")");

或者这样

 eval("var jsonobj = " + jsonstr);


5、实例:
如果直接是数组对象的话,那就直接遍历。

<script type="text/javascript">
	$(function(){
	 	var jsonArray = [{"id":"100","name":"zhangsan","age":"23","sex":"man"},{"id":"101","name":"lisi","age":"21","sex":"woman"},{"id":"102","name":"wangwu","age":"22","sex":"man"}];
	 	for(var json in jsonArray) {
	 		alert(jsonArray[json]['id']); //知道key值
            for(var key in jsonArray[json]) { //不知道key值的话就直接遍历了
                alert(jsonArray[json][key]);
	     	}
	 });
</script>		

如果是字符串的话,得先转化为对象

<script type="text/javascript">
	$(function(){
	 	var data = '[{"id":"100","name":"zhangsan","age":"23","sex":"man"},{"id":"101","name":"lisi","age":"21","sex":"woman"},{"id":"102","name":"wangwu","age":"22","sex":"man"}]';
	 	var jsonArray = eval("("+data+")");
	 	for(var json in jsonArray) {
	 		alert(jsonArray[json]['id']);
	 	}
	 });		
</script>

用each 遍历

<script type="text/javascript">
	$(function(){
	 	var data = '[{"id":"100","name":"zhangsan","age":"23","sex":"man"},{"id":"101","name":"lisi","age":"21","sex":"woman"},{"id":"102","name":"wangwu","age":"22","sex":"man"}]';
	 	var jsonArray = eval(data);
	 	$(jsonArray).each(function(index) {
	 		var val = jsonArray[index];
	 		alert(val.id); 
	 	});
	 });	
</script>	

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!