0

我在 ASP.NET MVC 视图中有一行 c# 代码

string json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model);

如果我调试这个字符串是

"{\"Age\":14}"

因此,当我将此字符串分配给我的 javascript 代码时,它会失败

JSON.parse('@json');

消息是

Uncaught SyntaxError: Unexpected token &

我该如何解决这个问题?

4

2 回答 2

4

看起来你至少在使用 MVC3,所以尝试使用:

JSON.parse( @Html.Raw(json) );

这会产生一个 HtmlString 类型,因此您可以将 for 类型改为 HtmlString,而不是 System.String json。此外,您可能想查看更好的JSON.NET库(我相信也是 MVC4 中的默认值)。

于 2013-02-22T22:49:41.717 回答
2

导致问题的不是反斜杠,而是 HTML 编码。实际上,字符串中根本没有任何反斜杠,这只是调试器显示带有引号的字符串的方式。

@命令将对字符串进行 HTML 编码,因此代码如下所示:

JSON.parse('{"Age":14}');

使用Raw方法输出不带 HTML 编码的字符串:

JSON.parse('@Raw(json)');
于 2013-02-22T22:51:51.873 回答