在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>
来源:https://blog.csdn.net/xiao__jia__jia/article/details/100009572