【问题标题】:Can not cast list<object> to list<custom object> [duplicate]无法将列表 <对象> 转换为列表 <自定义对象> [重复]
【发布时间】:2017-10-19 07:02:26
【问题描述】:

我有 3 节课,如下所示。

[Serializable]
public class Classa {
  public list<Object> list {get; set;}
}

[Serializable]
public class Classb {
  public string name {get; set;}
  public string nickname {get; set;}
}


[Serializable]
public class Classc {
  public string type {get; set;}
  public string price {get; set;}
}

在我的程序中,当我传递与ClassbClassc 匹配的JSON 结构时,我想将List&lt;Object&gt; 转换为List&lt;Classb&gt;List&lt;Classc&gt;...有没有办法转换它?

[HttpPost]
[ActionName("Import")]
[EnableCors(origins: "*", headers: "*", methods: "*")]
public Object Import([FromBody]Classa ImportData)
{

  List<Classb> blist = a.list.Cast<Classb>().toList();

}

它抛出:

无法将“Newtonsoft.Json.Linq.JObject”类型的对象转换为类型 'Classb'

我试过了:

List<Classb> blist = aOfType<Classb>().ToList();

成功但没有价值..

【问题讨论】:

  • 哦..我自己修复它...只需先转换为 Jarray 即可修复它

标签: c# json list linq


【解决方案1】:

在 Classa 中,您有一个包含 Objects 的列表,但您想要一个包含 Classb 的列表。所以改变这个

[Serializable]
public class Classa{
list<Object> list{get;set;}
}

[Serializable]
public class Classa{
list<Classb> list{get;set;}
}

还有这个

 List<Classb> blist = a.list.Cast<Classb>().toList();

可以

List<Classb> blist = a.list;

编辑: 你打错了她

publc class Classb{

【讨论】:

  • 我知道这是一种解决方案.. 但我还有其他类,例如 classc.. 我也想把它放到 list 中.. 这样我就不能更改为 list顺便说一句谢谢你
  • 如果你想这样做,你可以让 Classa 有 2 个列表,分别是 Classb 和 Classc。但是,如果您真的希望 Classa 只有 1 个列表。你创建一个新的 ClassSuper 并让 Classb 和 Classc 从 ClassSuper 扩展。 Classa 将拥有一个带有 ClassSuper 的列表
猜你喜欢
  • 1970-01-01
  • 2011-05-01
  • 1970-01-01
  • 2023-02-21
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
  • 2020-02-06
  • 2013-12-02
相关资源
最近更新 更多