如何规避 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 字符串 "{}"
,这是正确的,因为 ({}).abc
是 undefined
。 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
.
我使用 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 字符串 "{}"
,这是正确的,因为 ({}).abc
是 undefined
。 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
.