6

JSON 未定义错误

JSON.stringify(null)返回字符串null

JSON.stringify(undefined)返回值undefined。它不应该返回字符串 undefined吗?

解析值undefined或字符串undefined会给出一个SyntaxError.

有人可以解释为什么 JSON 会阻塞undefined以及在字符串化/解析值时如何绕过它?

4

3 回答 3

7

undefined不是有效的 JSON,因此该函数可以正常工作。

http://en.wikipedia.org/wiki/JSON#Data_types.2C_syntax_and_example

于 2013-07-03T16:32:21.163 回答
3
if(JSON.stringify(input) === undefined) {
    // error handle
}

或者

if(input === undefined) {
    // error handle
}
else {
    JSON.stringify(input);
}

对不起。生活有时很艰难。这几乎是你必须做的。

于 2013-07-03T16:29:16.290 回答
2

原因null是由一个没有值的变量引起的,所以当转换为 JSON 时,它会为你提供没有值的 JSON,未定义意味着它根本不存在,所以你可以' t 创建一个不存在的 JSON 对象。只需检查

 if(typeof myvar === 'undefined')

在您运行它并在代码中优雅地处理错误之前。一般来说,尽量避免undefined在你的 JS 中到处乱扔奇怪的东西,而且它们不一样,null而且通常处理方式不同。

于 2013-07-03T16:35:55.923 回答