先传入 空 - 初始value0,然后返回一个值value1(如果不对case""操作的话返回的就是初始value0),将stringify返回的value1作为新的value传入,返回的value2作为下一次循环的新value
var book = {
"authors" : [
"Nicholas C. Zakas",
"json"
],
"title" : "Professional javascript",
edition : 3,
year : 2011,
toJSON : function(){
return this;
}
};
var jsonText = JSON.stringify(book,function(key,value){
console.log(key);
switch(key){
case "authors":
console.log(JSON.stringify(value));
return value.join("**");
case "year":
console.log(JSON.stringify(value));
return 5000;
case "edition":
console.log(JSON.stringify(value));
return undefined;
case "":
console.log(JSON.stringify(value));
return {"title":"Professional javascript","edition":3,"year":2011};
default:
console.log(JSON.stringify(value));
return value;
}
}," - -");
console.log("answer " + jsonText);
---------------------输出---------------------
{"authors":["Nicholas C. Zakas","json"],"title":"Professional javascript","edition":3,"year":2011}
title
"Professional javascript"
edition
3
year
2011
answer {
- -"title": "Professional javascript",
- -"year": 5000
}