在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  HTML/ 一個關(guān)于json的問題

一個關(guān)于json的問題

var book = {
  title: "Professional Javascript",
  authors: [
    "Nicholas C. zakas",
    "Mike"
  ],
  edition: 3,
  year: 2011,
};
var jsonText = JSON.stringify(book, function(key , value){
  switch(key){
    case "authors":
      return value.join("*");
    case "year":
      return book.year+1;
    case "edition":
      return 4;
    default:
      return value;
  }
});
console.log(jsonText);

最后輸出

{"title":"Professional Javascript","authors":"Nicholas C. zakas*Mike","edition":4,"year":2012}

這個我是沒問題的,但是我把default那邊的value隨便改成一個數(shù)字之后,發(fā)現(xiàn)最后只返回那個值,就不返回json字符串了。
比如將

default:
  return value; 

改為

default:
  return 222;   

最后直接輸出222
最后的defalut的意思應(yīng)該是如果不匹配就返回那個222,為什么只會輸出222呢。
一直以來感謝大家的幫助!?。。?/p>

回答
編輯回答
幼梔
var book = {
  title: "Professional Javascript",
  authors: [
    "Nicholas C. zakas",
    "Mike"
  ],
  edition: 3,
  year: 2011,
};
var jsonText = JSON.stringify(book, function(key , value){
  console.log(key+ ' :' + value)
  return value
});
console.log(jsonText);

你會發(fā)現(xiàn),得到的結(jié)果是

 :[object Object]
title :Professional Javascript
authors :Nicholas C. zakas,Mike
0 :Nicholas C. zakas
1 :Mike
edition :3
year :2011
{"title":"Professional Javascript","authors":["Nicholas C. zakas","Mike"],"edition":3,"year":2011}

而第一個key為空的那個value,是個object,打印出來,發(fā)現(xiàn)他正好就是book本身,由于你的filter函數(shù)直接return 222

會導致直接將book的值設(shè)置為222,導致switch全部失效。

var book = {
  title: "Professional Javascript",
  authors: [
    "Nicholas C. zakas",
    "Mike"
  ],
  edition: 3,
  year: 2011,
};
var jsonText = JSON.stringify(book, function(key , value){
  if(key=' ')
  console.log(value)
  return value
});
console.log(jsonText);

得到的結(jié)果是

{ title: 'Professional Javascript',
  authors: [ 'Nicholas C. zakas', 'Mike' ],
  edition: 3,
  year: 2011 }
Professional Javascript
[ 'Nicholas C. zakas', 'Mike' ]
Nicholas C. zakas
Mike
3
2011
{"title":"Professional Javascript","authors":["Nicholas C. zakas","Mike"],"edition":3,"year":2011}

不難發(fā)現(xiàn), json.stringfy的第二個類型為函數(shù)的參數(shù),會把傳進來的參數(shù)本身,構(gòu)造成key: ' ', value: value 形式進行過濾,然后再過濾屬性,遞歸下去。

2017年5月10日 02:58