首页 > Web开发 > 详细

JSON使用:第一次调用的函数过滤器,传入的键是一个空字符串

时间:2020-07-13 23:28:14      阅读:83      评论:0      收藏:0      [点我收藏+]

(1)注意:实际上,第一次调用的函数过滤器,传入的键是一个空字符串,而值就是js对象

? 如下面一段代码

var obj = {
    name: "过青年",
    age: 20,
    arr: [1,2,3,4],
    location: "江西宜春",
    school: {
        location: "江西南昌"
    }
};

? 根据上面这个js对象,执行下面的代码,JSON.stringify()方法执行后,首先传入的键值对是"":obj ,没错,传入的键是一个空字符串,值就是JSON.stringify()方法的第一个参数对象;然后这个对象进入函数里面,如下,返回undefined,再拿undefined去调用函数过滤器,返回undefined;

// 过滤函数
var jsonText = JSON.stringify(obj,function(key,value){
    switch (key) {
        case "name":
            return "哈哈哈";
        default:
            return undefined;
    }
});
console.log(jsonText); //undefined

思考一下,用函数过滤器怎么将obj对象序列化成只有name一个键值对呢?

var jsonText = JSON.stringify(obj,function(key,value){
    switch (key) {
        case "":
            return value;
        case "name":
            return "哈哈哈";
        default:
            return undefined;
    }
});
console.log(jsonText); // {"name":"哈哈哈"}

使用JSON.parse()方法时,第二个参数的还原函数第一次调用时,传入的键是一个空字符串,而值就是json对象

(2)要序列化的对象中的每一个对象都要经过过滤器

var obj = {
    name: "过青年",
    age: 20,
    arr: [1,2,3,4],
    location: "江西宜春",
    school: {
        name: "过青年",
    	age: 20,
    	arr: [1,2,3,4],
        location: "江西南昌"
    }
};

var jsonText = JSON.stringify(obj,function(key,value){
    switch (key) {
        case "name":
            return "哈哈哈";
        case "arr":
            return [1];
        default:
            return value;
    }
});
/*
{"name":"哈哈哈","age":20,"arr":[1],"location":"江西宜春","school":{"name":"哈哈哈","age":20,"arr":[1],"location":"江西南昌"}}
 */
console.log(jsonText); // {"name":"哈哈哈"}

如上,每一个对象都要经过过滤器

JSON使用:第一次调用的函数过滤器,传入的键是一个空字符串

原文:https://www.cnblogs.com/guoqn/p/13296275.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!