Hi I’m hitting my head against the wall here…
I’m using DataContractJsonSerializer to encode data that I’m retrieving from the database which I’m sending back to an AJAX call…
I have this extension:
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());
}
}
and I’m calling it from the ASMX:
return _webServiceService.GetSponsors().ToJSON();
Passing in the resultset from a Stored Procedure using Entity Framework
It’s all work kinda working, except this is part of what’s being returned:
{"d":"[{\"FileID\":296,\"IconUrl\":\"\\/Files\\/Banners\\/20119\\/00B56BAC.jpg\",\"ImageUrl\":....
How on earth to I get rid of the slashes so that it returns the following:
{"d":"[{"FileID":296,"IconUrl":"/Files/Banners/20119/00B56BAC.jpg","ImageUrl":....
I’m trying to implement the JQuery UI Autocomplete. Well I’m guessing this will sort it, not sure if I need the FileID value within quotes?
You don’t need to JSON serialize the return value by hand, because ASP.NET will handle it for you automatically in that scenario. What you’re seeing there is ASP.NET applying a second level of JSON serialization to your manually generated string, which requires escaping double quotes with backslashes.
Change your ASMX method to return something like
List<Sponsor>and return_webServiceService.GetSponsors()directly, without the ToJSON() extension.