JSON使用:第一次調用的函數過濾器,傳入的鍵是一個空字符串

(1)注意:實際上,第一次調用的函數過濾器,傳入的鍵是一個空字符串,而值就是js對象json

​ 以下面一段代碼函數

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

​ 根據上面這個js對象,執行下面的代碼,JSON.stringify()方法執行後,首先傳入的鍵值對是"":obj ,沒錯,傳入的鍵是一個空字符串,值就是JSON.stringify()方法的第一個參數對象;而後這個對象進入函數裏面,以下,返回undefined,再拿undefined去調用函數過濾器,返回undefined;code

// 過濾函數
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)要序列化的對象中的每個對象都要通過過濾器string

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":"哈哈哈"}

如上,每個對象都要通過過濾器it

相關文章
相關標籤/搜索