我的应用程序中有IList
个网站,而网站有大量属性。
我想将此列表转换为JSON,以便在与此类似的下拉列表中使用
var sites = SiteRepository.FindAllSites();
return new JsonResult() { Data = sites, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
我遇到的问题是我只想使用网站类的id和name属性。我在思考如何使用“适配器”类,然后只显示这两个属性,然后我会对其进行序列化。
我遇到的问题是我想让类通用,以便它可以处理任何对象列表。有没有人遇到类似的情况并解决了它?
编辑:我不能使用[ScriptIgnore]
属性,因为我可能会想要序列化整个类。
答案 0 :(得分:4)
您可以从网站列表中创建一个匿名类吗?
var sites = SiteRepository.FindAllSites().Select(x=> new { Id=x.Id, Name=x.Name});
由于FindAllSites()
似乎返回了来自IList
的{{1}},您应该能够使用IEnumberable
的扩展方法(即System.Linq
})。这会将Select()
(包含所有属性)转换为List<Site>
(仅包含2个属性),然后将其转换为IEnumerable<some_anon_class>
内容,而不是JsonResult
列表
答案 1 :(得分:0)
如果使用[ScriptIgnore](System.Web.Script.Serialization)装饰类字段,C#将在使用Json进行序列化时忽略它们,就像使用[XmlIgnore]进行Xml序列化装饰一样。