JSON解析错误反斜杠
问题描述:
我一直在试图弄清楚为什么下面的JSON输入将无法在JSON.parse函数中解析。JSON解析错误反斜杠
{"World":"Hello\\Test"}
上面的json被JSON.NET返回。
我已经尝试了多种方法来获得这个工作。正如你可以看到反斜杠被转义并且https://jsonlint.com/能够解析它。
我也有一个失败的样本,在https://jsfiddle.net/ckp0uc0p/3/以及。
任何帮助将不胜感激。
答
注入JSON转换成JavaScript 源的最佳方式代码(在使用服务器端语言生成JavaScript时),是直接将其注入到需要它的位置,而不是在需要它的字符串文本中被解析。
例如:
var foo = <json blob>;
,这样的结果将是
var foo = {"World":"Hello\\Test"};
的JavaScript将其解释为一个对象字面从而导致对象,这是你想要什么无论如何。这可以避免“嵌套”转义序列的所有问题。
答
您需要为想要显示的每个反斜杠添加两个\\
。如果你解析JSON,显示2个反斜线你需要添加4
// inside a string to be parsed as json
var json = '{"World":"Hello\\\\Test"}'
console.log(JSON.parse(json))
// directly in an object
var object = {"World": "Hello\\Test"}
console.log(object)
答
try
{
var res = '{"World":"Hello\\\\Test"}';
\t var s = JSON.parse(res);
console.log(JSON.stringify(s));
} catch(error) {
\t alert(error);
}
[为什么jQuery JSON解析器需要双反斜杠?](http://stackoverflow.com/questions/3807537/why-does-the-jquery-json-parser-need-double-escaping -for-backslashes) – Brennan
不幸的是,我不控制这些数据。我标记JSON.NET,因为这个数据似乎被该组件解析并以这种方式存储。 – Hozikimaru
您发布的JSON有效。你究竟如何解析它?你真的把它作为一个字符串文字注入到JavaScript源代码中吗? –