1.JSON的下标(索引)是字符串,而数组的下标(索引)是数字。
<script>
var json={a:2,b:8,c:10};
var arr=[2,8,10];
alert(json.a);
//也可以写作 alert(json['a']); 这是把'.'转化为'[]'的写法
alert(arr[0]);
//弹出的结果都是 2
</script>
2.JSON没有.length,而数组有length。
alert(json.length)
会弹出来undefined;
所以,这里牵扯到一个问题。
JSON的遍历。
数组遍历,可以用for循环,length属性遍历,那么JSON用什么遍历呢?
1.json用for in循环遍历
<script>
var json={a:2,b:8,c:10};
var arr=[2,8,10];
for( var i in json){
alert(i+"的内容是"+json[i]+"!)
}
//代码弹出:
//a的内容是2!b的内容是8!c的内容是10!
</script>
2.借助json.parse()方法
借助json.parse()方法,把json转换为一个对象,然后用for循环遍历。
$.ajax({
type: "POST",
url: "json.php",
data: {'mession':'给我返回一个json数组!'},
success: function(txt){
json = JSON.parse(txt);//这一句就是我所说的最重要的那一句,其中的txt就是function的参数
alert(json.length);
}
});
上面的json.parse方法在有的浏览器上是不支持的,比如…令前端程序员闻风丧胆的…IE8!!!
上有政策,我下有对策。我们可以用eval()方法一样可以。方法类似json.parse();
只不过把
json = JSON.parse(txt);
//改成
json = eval(txt);
就行了。
但是但是,这里提一点。eval()方法的安全性不是很高,因为它的机制是,解析所有返回的数据,那么有病毒程序恶意攻击的时候,eval()也会解析了…
举个形象的例子就是,eval就像犬类里面的二哈,有人来偷东西他还帮人带路,而json.parse()相对而言就好很多。
感谢阅读,谢谢。