Re: [ASP.NET MVC] Вопрос по JsonResult
От: User239 Россия  
Дата: 12.09.09 22:10
Оценка: 61 (2)
Здравствуйте, SergASh, Вы писали:

SAS>Привет всем!


SAS>Есть класс, который оборачивается в JsonResult и отправляется на клиента. Проблема в том, что класс ветвистый, там много IList'ов, в которых ещё более ветвистые классы со своими IList'ами и так далее. Имена полей занимают места чуть ли не больше, чем полезные данные. Хотелось бы минизировать эти накладные расходы. Переименовывать поля класса не хочется, а то потом трудно будет понять что к чему. Но в JavaScript'е я вполне могу смириться с сокращениями. А вопрос такой: можно ли настроить JsonResult чтобы он переименовывал поля при сериализации? Наверное должен быть какой-то атрибут для этого .


SAS>Спасибо.


Насчёт кастомизации самого Json-а я не уверен, но могу предложить следующее решние c анонимными классами:
var data = new
{
    L1 = obj.List1, // копируем IList
    CO = new // вложенный ветвистый объект
    {
        p1 = obj.ComplexObject.Property1, // какие-то его свойства
        els = from el1 in obj.ComplexObject.Elements1 select new { id = el1.Id, name = el1.Name }, // и списки
        names = from el2 in obj.ComplexObject.Elements2 select el2.Name // даже список имён объектов из списка Elements2
    }
};
return Json(data);



Это очень удобно, когда клиенту ещё и нужны не все поля класса (например из списка Elements2 нужны только имена, чтобы просто отобразить их на страничке).

В зависимости от количества вложенных объектов вполне может прокатить. Хотя я не уверен, что можно в принципе сделать это как-то более компактно. Разве что получить Json в виде строки и заменить в ней имена свойств с помощью каких-нибудь регулярных выражений.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.