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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-28 10:29:57  来源:igfitidea点击:

JSON parse double quotes in string literal

javascriptjson

提问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);