03 json.stringify

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div></div>
    <script type="text/javascript">
        // var user = {
        //     name: '小明',
        //     age: 14,
        //     skill: ['HTML', 'Java'],
        // };

        // var json = JSON.stringify(user);

        // console.log(json);
        // 输出:{"name":"小明","age":14,"skill":["HTML","Java"]}


        // var user = {
        //     name: '小明',
        //     age: 14,
        //     skill: ['HTML', 'Java'],
        // };

        // var json = JSON.stringify(user, function (key, value) {
        //     console.log(key, value);

        //     return value;
        // });

        // console.log(json);


        // var user = {
        //     name: '小明',
        //     age: 14,
        //     skill: ['HTML', 'Java'],
        // };

        // var json = JSON.stringify(user, function (key, value) {
        //     if (key === '') {
        //         return value;
        //     }

        //     return '我是处理过的值';
        // });

        // console.log(json);


        // var obj = [
        //     {
        //         path: '/',
        //         component: 'function() {}',
        //         children: [
        //             {
        //                 path: 'note',
        //                 component: 'function() {}',
        //             },
        //             {
        //                 path: 'friends',
        //                 component: 'function() {}',
        //             }
        //         ]
        //     },
        //     {
        //         path: '*',
        //         component: 'function() {}',
        //     }
        // ];

        // var json1 = JSON.stringify(obj, null);
        // var json2 = JSON.stringify(obj, null, 2);
        // var json3 = JSON.stringify(obj, null, '*-*');

        // console.log(json1); // 没有格式
        // console.log(json2); // 使用两个空格控制的缩进
        // console.log(json3); // 使用 *-* 控制的缩进


        //深拷贝
        // var obj = { prop: 'value' };

        // var newObj = JSON.parse(JSON.stringify(obj));

        // newObj.prop = 'new value';

        // console.log(obj);
        // console.log(newObj);
        //根据结果可以看到新的对象修改,没有影响到原对象,两者之间不存在引用关系


        //如果转换的对象或者对象下的属性存在 toJSON 方法,那么这个方法的返回值会作为转换结果。
        // var user = {
        //     nickname: 'joker',

        //     toJSON: function () {
        //         return 'hahahahahahaha';
        //     },
        // }

        // var result = JSON.stringify(user);

        // console.log(result); // 输出:"hahahahahahaha"



        // var fn = function () { };
        // fn.toJSON = function () { return '我是函数' };

        // var result = JSON.stringify({
        //     a: fn,
        //     b: Symbol(1),
        //     c: undefined,
        //     d: function () { },
        // });

        // console.log(result);
        

        //数组包裹的json,可以直接调用
        var user = [{'name':'walter'},{'name':'lizzy'}]
        console.log(user[0].name)//walter
        console.log(typeof user[0])  //object

    </script>
</body>

</html>
原文地址:https://www.cnblogs.com/wuhui1222/p/14207995.html