来自WebService的ASP.NET 4.0 JSON - 删除Escape斜杠

时间:2012-02-08 17:42:04

标签: jquery-ui asp.net-ajax

嗨,我在这里碰到了我的头......

我正在使用DataContractJsonSerializer来编码我正从数据库中检索的数据,我将其发送回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 Autocomplete。好吧,我猜这会对它进行排序,不确定我是否需要引号内的FileID值?

1 个答案:

答案 0 :(得分:1)

您不需要手动JSON序列化返回值,因为ASP.NET will handle it for you automatically in that scenario。你看到的是ASP.NET在手动生成的字符串中应用了第二级JSON序列化,这需要使用反斜杠转义双引号。

更改您的ASMX方法以返回List<Sponsor>之类的内容并直接返回_webServiceService.GetSponsors(),而不使用ToJSON()扩展名。