JSON对象的两个方法

JSON.parse(string)

​ 接受一个JSON字符串并将其转换成一个JavaScript对象

JSON.stringify(obj)

​ 接受一个JavaScript对象并将其转换为一个JSON字符串

<script >
        // 创建一个字符串
        var userStr = '{"name":"taoqz","gender":"man","age":"18"}';
        // 打印字符串并且验证其类型
        console.log(userStr) // {"name":"taoqz","gender":"man","age":"18"}
        // 可以查看对象的类型
        console.log(typeof (userStr)); // string

        // 将一个标准的json字符串转为JavaScript对象
        var userToObJ = JSON.parse(userStr)
        // {name: "taoqz", gender: "man", age: "18"}
        // age: "18"
        // gender: "man"
        // name: "taoqz"
        // __proto__: Object
        console.log(userToObJ)
        // object
        console.log(typeof (userToObJ));

        // 将一个JavaScript对象转换为一个JSON字符串
        var objToStr = JSON.stringify(userToObJ);
        console.log(objToStr)
        // string
        console.log(typeof objToStr)
</ script>

数组

<script>
    // 在数组上同样适用
    const arr = ['Java', 'Python', 'PHP']
    console.log(arr)
    console.log(typeof arr) // object

    const arrStr = JSON.stringify(arr);
    console.log(arrStr)
    console.log(typeof arrStr) // string
</script>

JSON.parse()方法的第二个参数

 <script>
        console.log('---------------------------')
        let empStr = '{"name":"taoqz","gender":"man","age":18}'

        // JSON.parse()可以接受第二个参数,可以对对象值的属性进行操作
        const newEmp = JSON.parse(empStr, (key, value) => {
            console.log('key:' + key + " value:" + value)
            // return value;
            // 如果value是string类型,该键值对将不会被过滤
            if (typeof value === 'string') {
                // 可以对value进行操作
                // return value.toUpperCase();
                // 返回undefined 将会排除该键值对
                return undefined
            }
            return value;
        })
        // 最终结果只有age
        console.log(newEmp)
    </script>

JSON.stringify的三个参数

<script>
        console.log('---------------------------')

        let emp = {
            name: 'taoqz',
            gender: 'man',
            age: 18,
            hobbies:[
                'swim',
                'run'
            ],
            getHeight:function(){
                return '1.78';
            }
        };

        // 分别接受了三个参数,第一个参数是要被转换的JavaScript对象
        // 第二个参数是一个方法,同样支持可以通过对key进行判断及对value进行操作
        // 第三个参数是用来在打印时进行格式化
        let empStr2 = JSON.stringify(emp,function (key,value) {
            // 将会在序列化时排除age这个key
            if (key === 'age') {
                return undefined
                    // 因为序列化时,默认是不会序列化方法的,这会使方法加入序列化
            }else if(typeof(value) == 'function'){
                return Function.prototype.toString.call(value)
            }
            return value;
        },4);

        // {
        //     "name": "taoqz",
        //     "gender": "man",
        //     "hobbies": [
        //     "swim",
        //     "run"
        // ],
        //     "getHeight": "function(){\n                return '1.78';\n            }"
        // }
        console.log(empStr2)

    </script>

toJSON问题

<script>
    console.log('--------------------')
    let myObj = {
        name : 'myObj',
          age : 18,
       toJSON: function () {
           return 'toJSON!!'
       }
    }
    // 只会序列化toJSON方法的返回值
    // "toJSON!!"
    console.log(JSON.stringify(myObj))
</script>
Copyright © TaoQZ 2019 all right reserved,powered by Gitbook作者联系方式:taoqingzhou@gmail.com 修订时间: 2024-11-19 17:25:43

results matching ""

    No results matching ""

    results matching ""

      No results matching ""