如何避免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时,我会得到未定义:
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属性被"序列化"为根本不在对象中。
不要逐段使用JSON.stringify()
。创建您的JavaScript对象结构,然后将整个对象字符串化。
不能使用JSON.stringify
将值转换为不支持的JSON。值undefined
就是这些值中的一个。
如果使用例如JSON.stringify(null)
,则会返回字符串"null"
,因为这是一个受支持的值。您可以在http://json.org/支持的值是什么。
如果使用JSON.stringify(undefined)
,则不会返回字符串"undefined"
。结果中省略了不支持的值,因为这会使结果完全为空(而不是空对象或数组),因此结果为值undefined
。
相关文章:
- JSON.parse没有'不能使用Javascript
- Javascript JSON.parse not working
- 当其他解析器认为意外的令牌有效时,json.parse会失败
- 无法将JSON.parse与JSON_encode中的结果一起使用
- 在JSON.parse Javascript中字符串化Java对象抛出错误
- JSON.parse,已经在try/catch块中,仍然抛出语法错误
- 停止JSON.parse()从JSON字符串数据中删除尾随零
- JSON.parse给了我一个错误,但JSONLint说它'是一个有效的json
- 从JSON.parse获取元素
- JSON.parse:应为''或'}'在对象的属性值之后
- AJAX语法错误:JSON.parse:意外字符
- 如何避免JSON.stringify在特殊情况下返回undefined,从而为JSON.parse创建字符串失败
- 使用JSON.parse时出现无效字符javascript错误
- 动态地将过滤器应用于 JSON.parse()
- 为什么 JSON.parse 给出无效的字符
- 想要将 JSON 字符串传递给 javascript 变量 [ JSON.parse(),eval()] 对我不起作用,
- 使用 JSON.parse 将字符串(变量)转换为对象,错误意外标记
- “JSON.parse(str)”返回“意外令牌c”,但str是一个字符串
- AngularJS json.parse 在 json 数据的第 1 行第 1 列处意外的数据结尾
- 带有Ajax请求的Javascript JSON.parse函数n〃;新行转义字符