带反斜杠的JSON解析错误

时间:2017-05-03 20:30:37

标签: javascript c# json json.net

我一直试图弄清楚为什么以下JSON输入无法在JSON.parse函数中解析。

{"World":"Hello\\Test"}

上面的json是由JSON.NET返回的。

我尝试了多种方法来实现这一目标。如您所见,反斜杠已转义,https://jsonlint.com/能够解析它。

我在https://jsfiddle.net/ckp0uc0p/3/也有一个失败的样本。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:3)

您需要为要显示的每个反斜杠添加两个\\。如果您正在解析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)




答案 1 :(得分:3)

将JSON注入JavaScript 源代码(使用服务器端语言生成JavaScript时)的最佳方法是将其直接注入到您需要的地方,而不是在需要的字符串文字中被解析。

例如:

var foo = <json blob>;

这样结果将是

var foo = {"World":"Hello\\Test"};

JavaScript会将此解释为对象文字,从而产生对象,这是您想要获得的。这避免了“嵌套”转义序列的所有问题。

答案 2 :(得分:1)

&#13;
&#13;
try
{
  var res = '{"World":"Hello\\\\Test"}';
	var s = JSON.parse(res);
  console.log(JSON.stringify(s));
  
} catch(error) {
	alert(error);
}
&#13;
&#13;
&#13;