不希望JSON序列化整个类列表

时间:2010-03-09 11:40:32

标签: c# json serialization adaptor

我的应用程序中有IList个网站,而网站有大量属性。

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

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

我遇到的问题是我只想使用网站类的id和name属性。我在思考如何使用“适配器”类,然后只显示这两个属性,然后我会对其进行序列化。

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

编辑:我不能使用[ScriptIgnore]属性,因为我可能会想要序列化整个类。

2 个答案:

答案 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序列化装饰一样。

MSDN