无法将类型 'Newtonsoft.Json.Linq.JObject' 隐式转换为'System.Collections.Generic.IEnumerable<Employee>



我有以下代码:

public EmployeeDepartment InsertEmployeeAndDepartment(params dynamic[] employee)
{                
    filteredEmployees.EmployeeRecords = employee[0];           
}

其中EmployeeRecords属于IEnumerable<Employee> 类型

我得到以下异常:

无法将类型"Newtonsoft.Json.Linq.JObject"隐式转换为"System.Collections.Generic.IEnumerable"。显式转换存在(是否缺少演员阵容?)

我该如何解决此问题?

消息表明employee[0]将作为JObject返回,因此必须对其进行解析才能强制转换为另一种类型的对象。我还没有看到足够的代码,不知道哪一个最适合你,你可能还有更多的步骤要做,但下面页面上描述的动态到强类型映射(使用JObject.ToObject())或强类型JSON解析(使用JsonConvert.DeserializeObject())应该会让你走上正确的道路:

http://weblog.west-wind.com/posts/2012/Aug/30/Using-JSONNET-for-dynamic-JSON-parsing#DynamictoStrongTypeMapping

您可以使用JavascriptSerializer将动态转换为Employee:

public EmployeeDepartment InsertEmployeeAndDepartment(params dynamic[] employee)
{         
    var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();       
    filteredEmployees.EmployeeRecords = serializer.Deserialize<List<EmployeeRecords >>(employee);           
}

嗯,您正试图将一名员工分配给一个枚举对象。尝试:

filteredEmployees.EmployeeRecords = employee; 

你为什么在这个方法上使用动态参数,有什么好的理由吗?

如果你只想在你的枚举表中有一个元素,你可以试试:

filteredEmployees.EmployeeRecords = new [] { employee[0] }; 

尽管我怀疑您在某个时候需要将JSON对象反序列化为Employee对象

相关内容

最新更新