Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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.NET和RESTSharp-转换值时出错_C#_Json_Json.net - Fatal编程技术网

C# Json.NET和RESTSharp-转换值时出错

C# Json.NET和RESTSharp-转换值时出错,c#,json,json.net,C#,Json,Json.net,我已经创建了一个API,我现在正试图通过另一个应用程序访问它。尽管我正在使用Newtonsoft.JSON对JSON进行序列化和反序列化,但我遇到了一个转换错误,出现以下InnerException: {"Could not cast or convert from System.String to System.Collections.Generic.List`1[MidamAPI.Models.ManagerDTO]."} 以下是在RESTFactory中引发错误的代码段: pu

我已经创建了一个API,我现在正试图通过另一个应用程序访问它。尽管我正在使用Newtonsoft.JSON对JSON进行序列化和反序列化,但我遇到了一个转换错误,出现以下InnerException:

{"Could not cast or convert from System.String to System.Collections.Generic.List`1[MidamAPI.Models.ManagerDTO]."}
以下是在RESTFactory中引发错误的代码段:

     public List<T> Execute<T>(String endPoint) where T : new() {
        RestClient client = new RestClient(BASE_URL);

        IRestRequest req = new RestRequest(endPoint);
        req.AddHeader("Authorization", "Bearer " + this._token);
        var response = client.Execute(req).Content;
        List<T> responseData = JsonConvert.DeserializeObject<List<T>>(response);

        return responseData;
    }
这里称之为:

{
        RegisterViewModel vm = new RegisterViewModel();
        RESTFactory factory = new RESTFactory((String)Session["bearer"]);
        vm.availableManager = factory.Execute<ManagerDTO>("managers");
        vm.availableProperties = factory.Execute<PropertyDTO>("locations");
        vm.availableTrainers = factory.Execute<TrainerDTO>("trainers");

        return View(vm);
    }
该信息来自单独应用程序中的以下API控制器操作:

    [LocalFilter]
[RoutePrefix("managers")]
public class ManagersController : ApiController
{
    UnitOfWork worker = new UnitOfWork();

       [Route("")]
    public string Get()
    {
        IEnumerable<ManagerDTO> dtoList = Mapper.Map<List<Manager>, List<ManagerDTO>>(worker.ManagerRepo.Get().ToList());

        foreach (ManagerDTO dto in dtoList)
        {
            Manager manager = worker.ManagerRepo.GetByID(dto.ID);
            dto.Stores = (Mapper.Map<IEnumerable<Property>, IEnumerable<PropertyDTO>>(manager.Properties)).ToList();
        }

        return JsonConvert.SerializeObject(dtoList);
    }
两种应用程序中的DTO相同:

{
public class ManagerDTO
{
    public int ID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
    public List<PropertyDTO> Stores { get; set; }
}




  public class PropertyDTO
{
    public int ID;
    public string ShortName { get; set; }
    public string Street { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string Zip { get; set; }
    public string Phone { get; set; }
    public string Lat { get; set; }
    public string Long { get; set; }
    public string GooglePlaceID { get; set; }
    public string PropertyNumber { get; set; }
    public int ManagerID { get; set; }
    public int TrainerID { get; set; }

    public string ManagerName { get; set; }
    public string ManagerEmail { get; set; }
    public string TrainerEmail { get; set; }

}
我试着用这个工具来回应,在我看来一切都很好:

public class Store
{
    public int ID { get; set; }
    public string ShortName { get; set; }
    public string Street { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string Zip { get; set; }
    public string Phone { get; set; }
    public string Lat { get; set; }
    public string Long { get; set; }
    public string GooglePlaceID { get; set; }
    public string PropertyNumber { get; set; }
    public int ManagerID { get; set; }
    public int TrainerID { get; set; }
    public string ManagerName { get; set; }
    public string ManagerEmail { get; set; }
    public object TrainerEmail { get; set; }
}

public class RootObject
{
    public int ID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
    public List<Store> Stores { get; set; }
}
如有任何建议,将不胜感激

编辑:

RegisterViewModel类 公共类RegisterViewModel {


使您的控制器获得返回类型 IHttpActionResult

返回
OkdtoList;

我们可以看看RegisterViewModel是什么样子吗?当然,已经添加了模型。谢谢。从API返回的JSON格式正确吗?JSON看起来正确。json2charp工具能够适当地生成类,并且我能够通过PHP和Javascript客户端访问API。谢谢。我尝试了一下,但效果很好till不幸返回了相同的错误。对不起,您不需要对对象进行序列化,只需返回OkdtoList;
    public RegistrationDTO regModel { get; set; }
    public List<ManagerDTO> availableManager { get; set; }
    public List<PropertyDTO> availableProperties { get; set; }
    public List<TrainerDTO> availableTrainers { get; set; }
}