2012-02-08 61 views
1

嗨,我打我的頭靠在這裏的牆壁......ASP.NET 4.0從WebService的JSON - 刪除逃生斜線

我使用DataContractJsonSerializer編碼我是從數據庫中檢索數據,我「M發送回一個AJAX調用...

我有這樣的擴展:

public static string ToJSON<T>(this T obj) where T : class 
    { 
     DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T)); 
     using (MemoryStream stream = new MemoryStream()) 
     { 
      serializer.WriteObject(stream, obj); 
      return Encoding.Default.GetString(stream.ToArray()); 
     } 
    } 

,我從ASMX調用它:

return _webServiceService.GetSponsors().ToJSON(); 

使用實體框架

它的所有工作還挺工作,除了這個存儲過程在結果傳球被退回什麼部分:

{"d":"[{\"FileID\":296,\"IconUrl\":\"\\/Files\\/Banners\\/20119\\/00B56BAC.jpg\",\"ImageUrl\":.... 

如何在地球上,我擺脫了斜線,這樣它返回以下內容:

{"d":"[{"FileID":296,"IconUrl":"/Files/Banners/20119/00B56BAC.jpg","ImageUrl":.... 

我想實現JQuery UI自動完成。那麼我猜這會排序它,不知道我是否需要引號內的FileID值?

+0

這是一個MVC應用程序嗎? – tawman 2012-02-08 17:48:20

+0

不,這是MVP ...我會張貼一些代碼 – Ianc22 2012-02-08 17:51:26

回答

1

您不需要手動將JSON序列化返回值,因爲ASP.NET will handle it for you automatically in that scenario。您看到的是ASP.NET將第二級JSON序列化應用於手動生成的字符串,該字符串需要用反斜槓轉義雙引號。

更改ASMX方法返回類似List<Sponsor>的內容,並直接返回_webServiceService.GetSponsors(),不帶ToJSON()擴展名。

+0

謝謝戴夫......!我現在覺得自己很蠢......分類! – Ianc22 2012-02-08 18:38:48

+0

@ Ianc22:你不應該感覺不好。這是一個非常常見的錯誤。毫無疑問,ASP.NET會在這裏爲你處理JSON工作,所以假設你需要自己做這件事是很自然的。 – 2012-02-08 18:44:25