Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不希望JSON序列化整个类列表_C#_Json_Serialization_Adaptor - Fatal编程技术网

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

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属性。我在想解决这个问题的方法

我的应用程序中有一个IList站点,该站点有大量属性

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

    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}?