复制和粘贴带有转义引号的字符串化对象时的 JSON.parse 异常
JSON.parse exception when copy & pasting stringified objects with escaped quotes
我必须字符串化一些JS对象才能将文本保存在某个地方,我希望之后能够手动复制保存的文本,并通过控制台将其传递给一个函数,然后解析文本以对原始对象执行某些操作。
不幸的是,解析粘贴的文本似乎存在转义双引号的问题,因为解析总是失败。
我创建了一个小片段来说明我的问题:
http://jsfiddle.net/wgwLcgz6/1/
var jsonStr = JSON.stringify({ arg1: 'some string "with quotes"' });
$('#out1').html(jsonStr); // {"arg1":"some string '"with quotes'""}
JSON.parse(jsonStr); // Works just fine
try {
// Copied the ouput of JSON.stringify manually and pasted it directly into
// the parse function...
JSON.parse('{"arg1":"some string '"with quotes'""}');
// We never get here since an exception is thrown
$('#out2').html('Parsed successfully');
} catch (ex) {
// SyntaxError: Unexpected token w
$('#out2').html(ex.toString());
}
我想我确实理解为什么会发生这种情况,即使我无法正确解释它,但我对如何规避这一点一无所知,并且非常感谢一些帮助和更深入的解释。
还有一件事:如果我将字符串化对象{"arg1":"some string '"with quotes'""}
粘贴到在线 json 解析器中,例如 http://jsonlint.com/它可以很好地解析它,我想这是因为他们使用自己的解析器而不是内置的浏览器......
您需要转义引号和反斜杠。由于您在带有双引号的字符串周围使用单引号,因此您只需转义反斜杠:
JSON.parse('{"arg1":"some string ''"with quotes''""}');
相关文章:
- 字符串对象类型或基元类型也是如此
- Javascript-如何从字符串/对象引用回调
- JavaScript,字符串/对象操作的例外
- 如何在require中传递字符串/对象
- 字符串对象比较总是返回false
- 对字符串对象调用 .localeCompare 与构造特制的 Intl.Collator 对象之间的性能差异
- 将变量打印到控制台时出现意外字符串:[对象窗口]
- 如何使用javascript在字符串对象中添加原型
- 如何在 JavaScript 中设置/更新字符串对象的值
- jQuery:在 $.each 中从字符串类型转换为字符串对象
- 将属性添加到字符串对象时出现问题
- 从字符串对象中删除第一个出现的字母
- 如何正确地将JQuery函数从表单的输入标记中检索到的这些字符串对象转换为数字
- 转换“;字符串对象“;到对象
- Javascript中字符串对象到字符串原语的转换
- JavaScript符号类型:(非字符串对象键)
- 正在重新定义字符串对象中的长度属性
- 带有字符串对象的jQuery选择器不起作用
- 如何在javascript中将JSON字符串对象打印为下拉列表
- 将日期字符串对象转换为其他格式