在我的api中,我有一个包含一些字段的类,其中包括类型对象。我将另一个类的对象插入该字段。然后,我将整个类返回给调用api的程序。在该程序中,我可以将整个结果转换为原来的类,但是不能将object字段转换回它的原始类。我想念什么?
API
public class APIResponse
{
public int statusCode { get; set; }
public string errorMessage { get; set; }
public object returnObject { get; set; }
}
[HttpPost("CompleteCustomFilterOrder")]
[Produces("application/json", Type = typeof(APIResponse))]
public APIResponse GetItem
{
ItemDTO item = new ItemDTO();
item.ID = 12345
item.Name = "Widget";
item.Status = "Active";
APIResponse response = new APIResponse();
response.statusCode = 98765;
response.errorMessage = "Success!";
response.returnObject = item;
return response;
}
程序调用API
var client = new RestClient(url + "GetItem");
var request = new RestRequest(Method.GET);
var apiResponse = client.Execute<APIResponse>(request);
APIResponse response = apiResponse.Data;
ItemDTO item = (ItemDTO)response.returnObject;
响应正确地转换回一个类,但是项引发错误
无法转换类型为“ System.Collections.Generic.Dictionary`2 [System.String,System.Object]”的对象来键入“ ProjectName.BusinessLogicLayer.Classes.ItemDTO”。
除了命名空间外,两个程序中的ItemDTO类均相同。
答案 0 :(得分:1)
您正在接收JSON对象作为响应,因此直接强制转换将不起作用。您需要使用例如反序列化此对象。来自Newtonsoft.Json的JsonConvert。 顺便说一句。您是否考虑过将APIResponse设置为通用类?
public class APIResponse<T> where T: class
{
public int statusCode { get; set; }
public string errorMessage { get; set; }
public T returnObject { get; set; }
}