如何避免JSON.stringify在特殊情况下返回undefined,从而为JSON.parse创建字符串失败

How to circumvent JSON.stringify returning undefined in a special case and that way creating an string failing for JSON.parse?

本文关键字:JSON parse 字符串 失败 创建 stringify 何避免 在特殊情况下 返回 undefined      更新时间:2023-09-26

我使用Windows 7 64位和Firefox 32。
所以我读到JSON.parse无法处理类似JSON.parse("{ 'a': undefined }";
的内容但是,当在以下上下文中使用JSON.stringify时,我会得到未定义:

console.log("'abc': " + JSON.stringify(this.nothing));

中的结果

"'abc': undefined"

我在自己的函数中创建对象字符串,但为了简化这些函数,我对一些变量使用了JSON.stringify。

我以为这会让我处于安全的一边。

您使用JSON功能不正确:

console.log(JSON.stringify({ abc: this.nothing }));

这将为您提供JSON字符串"{}",这是正确的,因为({}).abcundefined。JSON规范中没有undefined的规定;唯一允许的标量值是字符串、数字、布尔值和null。因此,值为undefined的JavaScript属性被"序列化"为根本不在对象中。

不要逐段使用JSON.stringify()。创建您的JavaScript对象结构,然后将整个对象字符串化。

不能使用JSON.stringify将值转换为不支持的JSON。值undefined就是这些值中的一个。

如果使用例如JSON.stringify(null),则会返回字符串"null",因为这是一个受支持的值。您可以在http://json.org/支持的值是什么。

如果使用JSON.stringify(undefined),则不会返回字符串"undefined"。结果中省略了不支持的值,因为这会使结果完全为空(而不是空对象或数组),因此结果为值undefined