1

我的IList应用程序中有一个站点,并且站点具有大量属性。

我想将此列表转换为 JSON 以在类似于此的下拉列表中使用

    var sites = SiteRepository.FindAllSites();
    return new JsonResult() { Data = sites, JsonRequestBehavior = JsonRequestBehavior.AllowGet };

我遇到的问题是我只想使用站点类的 id 和 name 属性。我在想一种解决方法是使用一个“适配器”类,然后只公开这两个属性,然后我会序列化它。

我遇到的问题是我想让类通用,以便它可以处理任何对象列表。有没有人遇到过类似的情况并解决了?

编辑:我不能使用[ScriptIgnore]属性,因为可能存在我确实想要序列化整个类的情况。

4

2 回答 2

4

你能从你的网站列表中创建一个匿名类吗?

var sites = SiteRepository.FindAllSites().Select(x=> new { Id=x.Id, Name=x.Name});

由于FindAllSites()似乎返回一个IList,它是 的后裔IEnumberable,您应该能够使用System.Linq的扩展方法(即Select())。这会将List<Site>(具有所有属性)转换为IEnumerable<some_anon_class>(仅具有 2 个属性),然后将其赋予该JsonResult事物而不是Site.

于 2010-03-09T11:55:11.300 回答
0

如果你用 [ScriptIgnore] (System.Web.Script.Serialization) 装饰你的类字段,C# 将在使用 Json 序列化期间忽略它们,就像用 [XmlIgnore] 装饰 Xml 序列化的方式一样。

MSDN

于 2010-03-09T11:54:37.633 回答