使用Fiddler进行测试,以下web api 2方法将返回正确填充Success属性的对象,但Results属性始终为空。单步执行调试器,列表中有数据,但不作为响应的一部分发送。
我正在返回的对象是由EF生成的代理对象,它也可能与它有关。
public class ApiResult<T>
{
public ApiResult()
{
Results = new List<T>();
}
public bool Success { get; set; }
public List<T> Results { get; set; }
}
[HttpGet]
[Route("test")]
public IHttpActionResult test()
{
ApiResult<User> rv = new ApiResult<User>();
rv.Success = true;
rv.Results.Add(new User { name = "Steve" })
rv.Results.Add(new User { name = "Dave" })
return Ok(rv);
}
JSON结果
{"Success":true,"Results":[{},{}]}
WebApiConfig.cs
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
答案 0 :(得分:1)
您将属性结果定义为object
的列表。由于类型object
没有任何属性,序列化程序返回一个空对象。尝试将结果定义为User
的列表,如下所示:
public class ApiResult
{
public ApiResult()
{
Results = new List<User>();
}
public bool Success { get; set; }
public List<User> Results { get; set; }
}