我正在尝试从MVC项目中调用Web API,以检查员工是否有权访问该应用程序。我调用传递员工编号和应用名称的Web API。如果他们有访问权限,它将返回EmployeeId,AppName和AppRoll。如果他们没有访问权限,它将发送回一个空的正文。我创建了一个名为EmployeeAccess的模型,该模型具有3个属性以及用于调用API的方法。运行它时,出现错误“无法反序列化当前JSON数组”。在上面链接的示例中,他们没有创建JSON对象。有人知道我缺少什么或做错了什么吗?HomeController(某些值是用于测试的硬编码)public async System.Threading.Tasks.Task<ActionResult> Index(){ string employeeId = "762041"; string appName = "AppAdmin"; var objEmployeeAccess = new EmployeeAccess(); EmployeeAccess employeeAccess = await objEmployeeAccess.GetEmployeeAccess(employeeId, appName); return View();}类public class EmployeeAccess{ HttpClient client = new HttpClient(); public string AppName { get; set; } public string Emp { get; set; } public string Role { get; set; } internal async Task<EmployeeAccess> GetEmployeeAccess(string employeeId, string appName) { string uri = ConfigurationManager.AppSettings["ApiUri"]; string endPoint = string.Format("api/v1/GetAppRoleForEmp?EmpID={0}&AppName={1}", employeeId, AppName); client.BaseAddress = new Uri(uri); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); EmployeeAccess employee = null; HttpResponseMessage response = await client.GetAsync(endPoint); response.EnsureSuccessStatusCode(); if (response.IsSuccessStatusCode) { employee = await response.Content.ReadAsAsync<EmployeeAccess>(); } return employee; }}这是找到后返回的内容。这是实际错误。更新-更改为使用List 使其正常工作public async System.Threading.Tasks.Task<ActionResult> Index(){ string employeeId = "762041"; string appName = "AppAdmin"; var employeeAccess = new EmployeeAccess(); List<EmployeeAccess> listEmployee = await employeeAccess.GetEmployeeAccess(employeeId, appName); return View();}public class EmployeeAccess{ HttpClient client = new HttpClient(); public string AppName { get; set; } public string Emp { get; set; } public string Role { get; set; } internal async Task<EmployeeAccess> GetEmployeeAccess(string employeeId, string appName) { string uri = ConfigurationManager.AppSettings["ApiUri"]; string endPoint = string.Format("api/v1/GetAppRoleForEmp?EmpID={0}&AppName={1}", employeeId, appName); client.BaseAddress = new Uri(uri); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = await client.GetAsync(endPoint); response.EnsureSuccessStatusCode(); List<EmployeeAccess> listEmployee = new List<EmployeeAccess>(); if (response.IsSuccessStatusCode) { listEmployee = await response.Content.ReadAsAsync<List<EmployeeAccess>>(); } return listEmployee; }} (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 您试图将JSON array反序列化为JSON object并收到错误。为了避免这种情况,只需更改此行await response.Content.ReadAsAsync<EmployeeAccess>();进入这个await response.Content.ReadAsAsync<List<EmployeeAccess>>();得到结果后,请使用第一个元素并返回对象。 (adsbygoogle = window.adsbygoogle || []).push({});
09-27 00:00