這是我正在做的基本性質。注意:這是僞代碼。這段代碼來自內存,我沒有智能感知來抨擊我的語法! :-).NET MVC,從Json序列化的對象中移除信息()
(代碼後說明)
Controller:
{
public JSONResult GetCalendar(Form){
var data = Workshops.Select().ToEventViews();
var moreData = Appointments.Select().ToEventViews();
data.AddRange(moreData);
return Json(data);
}
}
ViewModel
{
public class EventView{
string prop1;
string prop2;
string prop3;
string prop4;
string prop5;
}
}
BLL
{
public EventView ToEventView(Workshop w){
return new EventView{
prop1 = w.thing;
prop2 = w.thing2;
//props 3, 4 and 5 not needed
}
}
public EventView ToEventView(Appointment a){
return new EventView{
prop1 = a.thing;
prop2 = a.thing;
prop3 = a.thing;
prop5 = a.thing;
}
}
public List<EventView> ToEventView(List<Workshop> wshops){
return wshops.ConvertAll(w=> w.ToEventView().ToList());
}
public List<EventView> ToEventView(List<Appointment> appts){
return appts.ConvertAll(a=> a.ToEventView().ToList());
}
}
我開發一個AJAX日曆應用程序。正如你所看到的,我得到了一個研討會和約會的列表,它們有很多共同之處(屬性方面),EventView
實際上有20多個屬性,因此,我製作了一個ViewModel來保存我需要序列化的屬性,其中很多對於約會和研討會都很常見,這對於事物的JS方面非常有用,因爲我的應用程序對於每個事件是預約還是研討會都是不可知的。有很多共同點,他們並沒有在EventView中使用完全相同的一組屬性(注意Appointment只使用prop1和prop2,而Appointment使用prop1,prop2,prop3和prop5)
目前,我正在發送由於這個請求返回了200KB的JSON,不幸的是,可能是25這是來自序列化但未使用的屬性的絨毛 - 發回作爲{prop1='value', prop2='value', prop3='', prop4='', prop5=''}
序列化的研討會。
所以這裏的問題是:當我在控制器中使用return Json(data)
時,有沒有辦法遍歷所有序列化數據並刪除所有沒有值的屬性?基本上我想寫一個方法來完成這個:json(data).RemoveEmptyProperties();
想法?