如何规避 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?

我使用 Windows 7 64 位和 Firefox 32。
所以我读到 JSON.parse 不能处理像 JSON.parse("{ 'a': undefined }";
这样的事情 但是在以下上下文中使用 JSON.stringify 时,我得到 undefined:

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 属性 是 "serialized",因为根本不在对象中。

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

您不能使用 JSON.stringify 将值转换为不受支持的 JSON。值 undefined 是这些值之一。

如果您使用例如 JSON.stringify(null),您将得到字符串 "null",因为这是受支持的值。您可以在 http://json.org/ 查看支持的值是什么。

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