使用 JSON.stringify() 时如何忽略 .toJSON 函数?

Ser*_*rov 7 javascript json overriding default stringify

我发现,如果您.toJSON()为对象定义函数,那么它将用于字符串化对象,而不是默认值。有没有办法忽略这个覆盖的函数并运行默认的 stringify 进程?

Pau*_*tte 0

重新定义toJSON指定对象中的方法。例如:

\n\n

\r\n
\r\n
    function kryptonite(key)\r\n       {\r\n       var replacement = {};\r\n       for(var __ in this)\r\n         {\r\n         if(__ in alias)\r\n           replacement[__] = this[__]\r\n         }\r\n    \r\n       return replacement;\r\n       }\r\n    \r\n    var foo, bar;\r\n    var alias = {"Clark":"","phone":""};\r\n    var contact = {\r\n                   "Clark":"Kent",\r\n                   "Kal El":"Superman",\r\n                   "phone":"555-7777"\r\n                  }\r\n    \r\n    contact.toJSON = kryptonite;\r\n\r\n    foo = JSON.stringify(contact);\r\n\r\n    contact.toJSON = undefined;\r\n    \r\n    bar = JSON.stringify(contact);\r\n\r\n    console.log("foo: ", foo);\r\n    console.log("bar: ", bar);
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n\n

参考

\n\n\n