Как заставить WebMethods сериализовать ExpandoObject

У меня есть WebMethod, который выглядит примерно так, который используется для заполнения jqGrid

[System.Web.Script.Services.ScriptService]
public class MyWebService: System.Web.Services.WebService
{
    [WebMethod]
    [Authorize(Roles = "Admin")]
    public object GetPeople(bool _search, double nd, int rows, int page, string sidx, string sord)
    {
        var tbl = new DynamicModel("ConnStr", tableName: "Person", primaryKeyField: "ID");
        var results = tbl.Paged(orderBy: sidx + " " + sord, currentPage: page, pageSize: rows);
        return results;
    }

}

«результаты» - это System.Dynamic.ExpandoObject со свойствами Items, TotalPages, TotalRecords

Json, который я возвращаю из веб-службы, выглядит следующим образом

{
"d": [{
    "Key": "TotalRecords",
    "Value": 1
}, {
    "Key": "TotalPages",
    "Value": 1
}, {
    "Key": "Items",
    "Value": [
        [{
            "Key": "Row",
            "Value": 1
        }, {
            "Key": "ID",
            "Value": 1
        }, {
            "Key": "Name",
            "Value": "Test Template"
        }]
    ]
}]
}
} // Don't know why firebug put this extra bracket

В идеале я бы предпочел, чтобы он вернулся без всякой работы с ключами и значениями, поскольку он излишне раздувает json и плохо работает с jqGrid.

Есть ли способ изменить способ обработки ASP.NET сериализации ExpandoObject?

5
задан Christian Strempfer 14 November 2013 в 10:28
поделиться