javascript JSON 解析字符串文字中的双引号
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/29416529/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
JSON parse double quotes in string literal
提问by brewsky
I am having problem parsing quotes in string literal.
我在解析字符串文字中的引号时遇到问题。
var lit = '{"foo":"test \"1\"","bar":"test 2"}';
In console, this gives an error 'Uncaught exception'. I am expecting:
在控制台中,这会给出错误“未捕获的异常”。我期待:
Object {foo: "test "1"", bar: "test 2"}
Here is my fiddle https://jsfiddle.net/bruceradtke/kor8amm5/4/
这是我的小提琴https://jsfiddle.net/bruceradtke/kor8amm5/4/
It works ok if I assign stringify result to variable and then parse that variable. But not if I use string literal as above.
如果我将 stringify 结果分配给变量然后解析该变量,它就可以正常工作。但如果我像上面那样使用字符串文字,则不会。
Thanks.
谢谢。
My code:
我的代码:
var myobject = {};
myobject.foo = "test \"1\"";
myobject.bar = "test 2";
var sresult = JSON.stringify(myobject);
console.log('stringify=' + sresult);
// OK
var thaw = JSON.parse(sresult);
console.log( thaw);
var lit = '{"foo":"test \"1\"","bar":"test 2"}';
console.log(lit);
// Broken
var thaw2 = JSON.parse(lit);
回答by StriplingWarrior
Remember that you are escaping two string literals: one for declaring the property and one for declaring the variable (lit
). So you need to escape your escape character: "test \\"1\\""
请记住,您正在转义两个字符串文字:一个用于声明属性,另一个用于声明变量 ( lit
)。所以你需要转义你的转义字符:"test \\"1\\""
var lit = '{"foo":"test \"1\"","bar":"test 2"}';
console.log(lit);
var thaw2 = JSON.parse(lit);