【JavaScript】js中的JSON和数组的区别,JSON的遍历

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()相对而言就好很多。

感谢阅读,谢谢。

你可能感兴趣的:(js问题)