【发布时间】:2016-08-09 15:57:28
【问题描述】:
由于某种原因,只有每个数组的第一项作为 JSON 返回,有什么线索吗?
这是我在调试过程中看到的,如您所知,“类别”中有两个项目,“任务”中有两个项目:
Postman JSON 结果(它应该返回所有项目,不是吗?):
作为参考,这是我的“Category.cs”:
public class Category
{
public int CategoryId { get; set; }
public string Name { get; set; }
public DateTime Timestamp { get; set; }
public string Username { get; set; }
public ApplicationUser ApplicationUser { get; set; }
public virtual ICollection<Task> Tasks { get; set; }
}
我的“Task.cs”:
public class Task
{
public int TaskId { get; set; }
public string Name { get; set; }
public DateTime Timestamp { get; set; }
public virtual Category Category { get; set; }
}
还有我的 API:
[HttpGet]
public JsonResult Get()
{
var result = _repo.GetAllForUser("lucas@test.com");
return Json(result);
}
和存储库:
public IEnumerable<Category> GetAllForUser(string name)
{
return _ctx.Categories
.Where(c => c.ApplicationUser.UserName == name)
.Include(c => c.Tasks)
.ToList();
}
这是我插入数据库的内容,以及我应该从 Api 中检索的内容:
categories.Add(new Category
{
Name = "cat 1",
Tasks = new List<Task>
{
new Task { Name="task 1" },
new Task { Name="task 2" }
}
});
categories.Add(new Category
{
Name = "cat 2",
Tasks = new List<Task>
{
new Task { Name="task 3" },
new Task { Name="task 4" }
}
});
【问题讨论】:
-
您能分享一下您的
Task模型的样子吗? -
提供更多相关代码
-
通过添加更多相关代码编辑问题
-
@mic4ael: 没有 Json 类,它是来自控制器的 Json 方法,它是带有状态码的新 JsonObjectResult 的快捷方式
-
您是否在 Windows 上运行您的应用程序?根据您的模型,您似乎有循环引用(任务引用类别,反之亦然),这会导致 Json.net 抛出异常:github.com/aspnet/IISIntegration/issues/39 ...试试这个:启用日志记录并查看您是否看到任何正在记录的异常。 ..还可以尝试非 IIS 场景(例如:直接在控制台中执行
dotnet run并启用控制台日志记录)
标签: c# .net json api asp.net-core