C# 不希望JSON序列化整个类列表
我的应用程序中有一个IList站点,该站点有大量属性 我想将此列表转换为JSON,以便在类似于此的dropdownlist中使用C# 不希望JSON序列化整个类列表,c#,json,serialization,adaptor,C#,Json,Serialization,Adaptor,我的应用程序中有一个IList站点,该站点有大量属性 我想将此列表转换为JSON,以便在类似于此的dropdownlist中使用 var sites = SiteRepository.FindAllSites(); return new JsonResult() { Data = sites, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 我的问题是,我只想使用site类的id和name属性。我在想解决这个问题的方法
var sites = SiteRepository.FindAllSites();
return new JsonResult() { Data = sites, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
我的问题是,我只想使用site类的id和name属性。我在想解决这个问题的方法是使用一个“适配器”类,然后只公开这两个属性,然后将其序列化
我的问题是我想让这个类成为泛型的,这样它就可以处理任何对象列表。有人遇到过类似的情况并解决了吗
编辑:我不能使用[ScriptIgnore]属性,因为在某些情况下,我确实希望序列化整个类。如果使用[ScriptIgnore]System.Web.Script.Serialization C在使用Json进行序列化时忽略类字段,就像使用[XmlIgnore]进行Xml序列化一样
如果使用[ScriptIgnore]修饰类字段,System.Web.Script.Serialization C将在使用Json进行序列化时忽略它们,这与使用[XmlIgnore]修饰Xml序列化的方式大致相同
你能从你的网站列表中创建一个匿名类吗
var sites = SiteRepository.FindAllSites().Select(x=> new { Id=x.Id, Name=x.Name});
由于FindAllSites似乎返回一个IList,它是IEnumberable的后代,所以您应该能够使用System.Linq的扩展方法,即Select。这会将包含所有属性的列表转换为仅包含2个属性的IEnumerable,然后将其指定给JsonResult对象,而不是站点列表。您能从站点列表创建一个匿名类吗
var sites = SiteRepository.FindAllSites().Select(x=> new { Id=x.Id, Name=x.Name});
由于FindAllSites似乎返回一个IList,它是IEnumberable的后代,所以您应该能够使用System.Linq的扩展方法,即Select。这会将包含所有属性的列表转换为仅包含2个属性的IEnumerable,然后将其指定给JsonResult对象,而不是站点列表。很抱歉,我应该在问题中提到这一点。有时我可能想序列化整个Site类,通过ajax请求将其传回。对不起,我应该在问题中提到这一点。有时,我可能希望序列化整个Site类,以便通过ajax requestGood解决方案将其传回,但它不需要是:var sites=sitererepository.FindAllSites.Selectx=>new{Id=x.Id,Name=x.Name}?很好的解决方案,但不一定是:var sites=SiteRepository.FindAllSites.Selectx=>new{Id=x.Id,Name=x.Name}?