使用 JSON.stringify() 时如何忽略 .toJSON 函数?
How to ignore .toJSON function when using JSON.stringify()?
我发现如果你为一个对象定义 .toJSON()
函数,那么它被用来对一个对象进行字符串化,而不是默认的。
有没有办法忽略这个被覆盖的函数和 运行 默认的字符串化过程?
重新定义指定对象中的toJSON
方法。例如:
function kryptonite(key)
{
var replacement = {};
for(var __ in this)
{
if(__ in alias)
replacement[__] = this[__]
}
return replacement;
}
var foo, bar;
var alias = {"Clark":"","phone":""};
var contact = {
"Clark":"Kent",
"Kal El":"Superman",
"phone":"555-7777"
}
contact.toJSON = kryptonite;
foo = JSON.stringify(contact);
contact.toJSON = undefined;
bar = JSON.stringify(contact);
console.log("foo: ", foo);
console.log("bar: ", bar);
参考资料
我发现如果你为一个对象定义 .toJSON()
函数,那么它被用来对一个对象进行字符串化,而不是默认的。
有没有办法忽略这个被覆盖的函数和 运行 默认的字符串化过程?
重新定义指定对象中的toJSON
方法。例如:
function kryptonite(key)
{
var replacement = {};
for(var __ in this)
{
if(__ in alias)
replacement[__] = this[__]
}
return replacement;
}
var foo, bar;
var alias = {"Clark":"","phone":""};
var contact = {
"Clark":"Kent",
"Kal El":"Superman",
"phone":"555-7777"
}
contact.toJSON = kryptonite;
foo = JSON.stringify(contact);
contact.toJSON = undefined;
bar = JSON.stringify(contact);
console.log("foo: ", foo);
console.log("bar: ", bar);
参考资料