Из метода веб-службы я возвращаю объект типа «GridBindingDataSet». Но он не становится сериализованным как JSON автоматически.Преобразование объекта .Net в JSON
Есть ли способ убедиться, что объект сериализуется как JSON? Я использую веб-службу с поддержкой AJAX, которую можно вызывать с клиентской стороны с помощью jQuery.
public class GridBindingDataSet
{
public int TotalCount { get; set; }
public DataTable Data { get; set; }
}
РЕДАКТИРОВАТЬ 1: Я получаю следующее сообщение об ошибке, когда метод веб-сервис вызывается из JQuery:
Круговой ссылка была обнаружена при сериализации объект типа «System.Reflection.RuntimeModule '
EDIT 2: Я использовал JSON.net для сериализации вышеуказанного объекта GridBindingDataSet. Теперь веб-служба возвращает строку, а не GridBindingObject. Код для этого приведен ниже. Но браузер не может понять d.TotalCount и d.Data, даже если они есть в JSON.
[WebMethod]
public string GetJSONDataSetForGrid()
{
...
...
DataTable dt = GetDataForPage0();
int total = GetTotalCount();
GridBindingDataSet gridBindingData = new GridBindingDataSet (total, dt);
//return a JSON serialized string
return JsonConvert.SerializeObject(gridBindingData,
Formatting.None, new JsonSerializerSettings
{
PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.None
});
}
Но JSON возвращается полна обратной косой черты, которые браузер не интерпретируют, так как сетка, используя строку JSON показывает вверх как пустые. d.Data и d.TotalCount не анализируются из строки JSON. JSON настраивали, как показано ниже:
{"d":"{\"TotalCount\":81,\"Data\":[{\"ProductName\":\"Alice Mutton\",\"UnitPrice\":39.00,
\"UnitsInStock\":0,\"Discontinued\":true},{\"ProductName\":\"Aniseed Syrup\",\"UnitPrice\":10.00,
\"UnitsInStock\":13,\"Discontinued\":false}]}"}
JSON.net кажется хорошо с ним http://stackoverflow.com/questions/2979922/how- to-convert-datatable-to-json-string-using-json-net .. не уверен, как вы подключили бы его в своем случае «метод веб-службы». – ziya
'Но его не получается сериализованным как JSON автоматически', не очень описательным. Вы получили сообщение об ошибке? Что вы не ожидаете? –
@ L.B - Я добавил ошибку, которую вижу под EDIT 1 моего сообщения. – Sunil