初识JSON(parse/stringify/eval方法)

初识JSON

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JSON</title>
<!--   如果需要兼容ie7及以下的JSON操作,可以通过引入外部js文件来处理-->
    <script async src="DOM/js/json2.js"></script>
    <script>
        window.onload = function () {
            /**
             * JSON:
             *   -JS中的对象只有JS认识,其他的的语言都不认识
             *   -JSON就是一个特殊格式的字符串,该字符串可以被任何语言识别
             *         并且可以转换为任意语言中的对象,JSON在开发中主要用来数据的交互
             *   -JSON
             *      -JavaScript Object  Notation JS对象表示法
             *      -JSON和JS的对象格式一样,只不过JSON字符串中属性名必须加""双引号
             *           JS中加不加都可以识别,其他的和JS语言一致
             *        JSON分类:
             *              1.对象 {}
             *              2.数组 []
             *        JSON中允许的值:
             *        1.字符串
             *        2.数值
             *        3.布尔值
             *        4.null
             *        5.对象(不包括函数对象)
             *        6.数组
             */
            var obj = '{"name":"孙悟空","age":18,"gender":"男"}';
            var arr = '[1,2,3,"hellow",true]';
            var obj2 = '{"arr":[1,2,3]}';
            var arr2 = '[{"name":"孙悟空","age":18,"gender":"男"},{"name":"孙悟空","age":18,"gender":"男"}]';
            /**
             * 将JSON字符串转换为JS对象
             *    在JS中为我们提供了一个工具类,叫JSON
             *    这个对象可以帮助我们将一个JSON对象转换为一个JS对象,也可以将一个JS对象转换为JSON
             */
            var json1 = '{"name":"孙悟空","age":18,"gender":"男"}';
            /**
             * json -->js对象
             *      JSON.parse()方法:
             *           -可以将JSON字符串转换成一个js对象
             *           -它需要一个JSON字符串作为参数,会将该字符串转换JS对象并返回
             */
                //转换为普通对象
            var myJson = JSON.parse(json1);
            console.log(myJson.name);//孙悟空
            //转换为数组对象
            var myJson2 = JSON.parse(arr);
            console.log(myJson2[3]);//hellow
            /**
             * js对象-->json
             *      JSON.stringify()方法:
             *          -可以将一个js对象转换为JSON字符串
             *          -需要一个js对象作为参数,会返回一个JSON字符串
             */
            var obj3 = {name: "猪八戒", age: 28, gender: "男"};
            var str = JSON.stringify(obj3);
           console.log(str);//{"name":"猪八戒","age":28,"gender":"男"}
            /**
             * JSON这个对象在IE7及以下的浏览器中不支持,所以在这些浏览器中调用时会报错
             * eval()方法:
             *      -该方法可以用来执行一段字符串形式的代码,并将执行结果返回
             *      -如果使用eval()执行的字符串中含有{},它会将{}当成代码块
             *           如果不希望将其当成代码块执行,则需要在字符串前后各加一个()
             *           就是将其用括号包围起来。
             *           例如: eval("("+obj4+")");
             *  -eval()这个函数功能十分强大,可以直接执行一个字符串的js代码
             *      但是在开发中尽量不要使用,首先其执行性能比较差
             *      而且还具有安全隐患。
             *
             * 注意:双引号里不能再包括双引号,要用单引号
             */
            var str2 = "alert('hellow');";
            eval(str2);//弹出hellow弹窗
            var obj4 = '{name: "猪八戒", age: 28, gender: "男"}';
            var str3 = eval("(" + obj4 + ")");
            console.log(str3);
        };
    </script>
</head>
<body>

</body>
</html>
注意点

1.对象中属性可不加双引号,但是在JSON中必须加

2.能不使用eval()方法就不使用,存在安全问题。

3.如果希望兼容ie7及以下浏览器使用JSON可以印日这个json2.js

上一篇:JSON.stringify()的深层用法


下一篇:ajax接口数据传输方法与传输文件时的出现的错误的归纳