C# 无法隐式转换类型';Newtonsoft.Json.Linq.JObject';至';System.Collections.Generic.IEnumerable<;员工>';
我有以下代码:C# 无法隐式转换类型';Newtonsoft.Json.Linq.JObject';至';System.Collections.Generic.IEnumerable<;员工>';,c#,json.net,C#,Json.net,我有以下代码: public EmployeeDepartment InsertEmployeeAndDepartment(params dynamic[] employee) { filteredEmployees.EmployeeRecords = employee[0]; } 其中员工记录的类型为IEnumerable 我得到以下例外情况: 无法将类型“Newtonsoft.Json.Linq.JObject”隐式转换为“Sy
public EmployeeDepartment InsertEmployeeAndDepartment(params dynamic[] employee)
{
filteredEmployees.EmployeeRecords = employee[0];
}
其中员工记录的类型为IEnumerable
我得到以下例外情况:
无法将类型“Newtonsoft.Json.Linq.JObject”隐式转换为“System.Collections.Generic.IEnumerable”。明确的
存在转换(您是否缺少演员阵容?)
我该如何解决这个问题?嗯,您正试图将单个员工分配到一个可枚举项。尝试:
filteredEmployees.EmployeeRecords = employee;
你为什么要在这个方法上使用动态参数,有什么好的理由吗
如果只需要枚举表中的一个元素,可以尝试:
filteredEmployees.EmployeeRecords = new [] { employee[0] };
尽管我怀疑您在某个时候需要将JSON对象反序列化为Employee对象,但您可以使用它将动态对象转换为Employee:
public EmployeeDepartment InsertEmployeeAndDepartment(params dynamic[] employee)
{
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
filteredEmployees.EmployeeRecords = serializer.Deserialize<List<EmployeeRecords >>(employee);
}
public EmployeeDepartment InsertEmployeeAndDepartment(params dynamic[]employee)
{
var serializer=new System.Web.Script.Serialization.JavaScriptSerializer();
filteredEmployees.EmployeeRecords=serializer.Deserialize(员工);
}
该消息表明employee[0]
将作为JObject
返回,因此必须对其进行解析才能转换为另一种类型的对象。我对您的代码了解得不够,不知道哪一个最适合您,您可能需要采取更多的步骤,但需要使用动态到强类型映射(使用JObject.ToObject()
)或强类型JSON解析(使用JsonConvert.DeserializeObject()
)如下页所述,您应该走上正确的道路:
为什么员工充满活力[]?这会导致各种各样的问题,比如说有人将jObject而不是IList“employee”传入数组..我最终必须执行filteredEmployees.EmployeeRecords=employee[0]和filteredEmployees.DeptreRecords=employee[1];我相信这是正确的答案。在我的例子中,我想将JObject转换为动态对象,然后将动态对象转换为IDictionary,这样我就可以使用像obj[“[字段名]”]这样的名称。我必须使用JObject.ToObject()。谢谢你的建议。