0

我在ASP.NET MVC的C#代碼行查看一個C#JavaScriptSerializer序列串具有使得在javascript問題backslashs

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

如果我調試這個字符串

"{\"Age\":14}" 

所以當我這個字符串分配給我的javascript代碼,它將失敗

JSON.parse('@json'); 

該消息是

Uncaught SyntaxError: Unexpected token & 

我該如何解決這個問題?

回答

4

看起來你正在使用MVC3,至少,那麼請嘗試使用:

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

那吐出HtmlString類型,所以不是System.String,你可以做類型json到HtmlString。此外,你可能想看看JSON.NET庫,這是更好(也是MVC4中的默認值,我相信)。

2

這不是造成問題的反斜槓,而是HTML編碼。實際上,字符串中沒有任何反斜槓,只是調試器顯示帶有引號的字符串。

@命令將HTML編碼串,因此代碼將看起來像這樣:

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

使用Raw方法輸出的串而不HTML編碼:

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