嗨,我在这里碰到了我的头......
我正在使用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值?
答案 0 :(得分:1)
您不需要手动JSON序列化返回值,因为ASP.NET will handle it for you automatically in that scenario。你看到的是ASP.NET在手动生成的字符串中应用了第二级JSON序列化,这需要使用反斜杠转义双引号。
更改您的ASMX方法以返回List<Sponsor>
之类的内容并直接返回_webServiceService.GetSponsors()
,而不使用ToJSON()扩展名。