2014-04-19 54 views
3

我有一个ASP.NET MVC应用程序返回一个JSON字符串到VIEW。如何在JavaScript中使用JSON.parse()解析HTML字符串?

// Parsing the model returned on the VIEW 
var jsonString = '@Html.Raw(Model.ToJson())'; 
var jsonObj = JSON.parse(jsonString); 

的问题是,我不能够解析,因为jsonString包含的字符,如“\”和“'”。

//Sample string 
{ "description" : "<p>Sample<span style=\"color: #ff6600;\"> Text</span></strong></p>" } 

回答

5

JSON是有效的JavaScript,所以你可以这样做:

var jsonObj = @Html.Raw(Model.ToJson()); 

仅供参考,JSON解析失败的原因是因为虽然"\逃脱,使其有效的JSON ,反斜杠本身需要在字符串中转义以供JSON解析器看到。比较:

JSON.parse('"quote: \""'); // error: unexpected string 
JSON.parse('"quote: \\""'); // 'quote: "' 

这个例子也应该澄清所发生的事情反斜线:

var unescaped = '\"', escaped = '\\"'; 

console.log(unescaped, unescaped.length); // '"', 1 
console.log(escaped, escaped.length);  // '\"', 2 
+0

你的答案解释了一切。谢谢! –

0

如果你想创建一个有效的JavaScript字符串,你需要逃避反斜线和撇号:

var jsonString = '@Html.Raw(Model.ToJson().Replace("\\", "\\\\").Replace("'", "\\'"))'; 
+0

为什么downvote?如果你不解释你认为什么是错的,它不能改善答案。 – Guffa

相关问题