1 語法
JSON.stringify(value[, replacer[, space]])
一般用法:
var user = {name: `andy`, isDead: false, age: 11, addr: `shanghai`};
JSON.stringify(user);
"{"name":"andy","isDead":false,"age":11,"addr":"shanghai"}"
2 擴充套件用法
2.1 replacer
replacer可以是函式
或者是陣列
。
功能1: 改變屬性值
將isDead屬性的值翻譯成0或1,0對應false,1對應true
var user = {name: `andy`, isDead: false, age: 11, addr: `shanghai`};
JSON.stringify(user, function(key, value){
if(key === `isDead`){
return value === true ? 1 : 0;
}
return value;
});
"{"name":"andy","isDead":0,"age":11,"addr":"shanghai"}"
功能2:刪除某個屬性
將isDead屬性刪除,如果replacer的返回值是undefined
,那麼該屬性會被刪除。
var user = {name: `andy`, isDead: false, age: 11, addr: `shanghai`};
JSON.stringify(user, function(key, value){
if(key === `isDead`){
return undefined;
}
return value;
});
"{"name":"andy","age":11,"addr":"shanghai"}"
功能3: 通過陣列過濾某些屬性
只需要name屬性和addr屬性,其他不要。
var user = {name: `andy`, isDead: false, age: 11, addr: `shanghai`};
JSON.stringify(user, [`name`, `addr`]);
"{"name":"andy","addr":"shanghai"}"
2.2 space
space可以是數字
或者是字串
, 如果是數字則表示屬性名前加上空格符號的數量,如果是字串,則直接在屬性名前加上該字串。
功能1: 給輸出屬性前加上n個空格
var user = {name: `andy`, isDead: false, age: 11, addr: `shanghai`};
JSON.stringify(user, null, 4);
"{
"name": "andy",
"isDead": false,
"age": 11,
"addr": "shanghai"
}"
功能2: tab格式化輸出
var user = {name: `andy`, isDead: false, age: 11, addr: `shanghai`};
JSON.stringify(user, null, ` `);
"{
"name": "andy",
"isDead": false,
"age": 11,
"addr": "shanghai"
}"
功能3: 搞笑
JSON.stringify(user, null, `good`);
"{
good"name": "andy",
good"isDead": false,
good"age": 11,
good"addr": "shanghai"
}"
2.3 深拷貝
var user = {name: `andy`, isDead: false, age: 11, addr: `shanghai`};
var temp = JSON.stringify(user);
var user2 = JSON.parse(temp);
3 其他
JSON.parse() 其實也是支援第二個引數的。功能類似於JSON.stringify的第二個引數的功能。