我有一个具有ICollection的模型:
public class Blog
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public ICollection<Posts> Posts { get; set; }
}
这可用于MVC:
public async Task<IActionResult> Index()
{
return View(await _context.Blog.Include(l => l.Posts).ToListAsync());
}
我尝试使用 API控制器:
[Route("api/[controller]")]
[ApiController]
....
[HttpGet]
public IEnumerable<Blog> GetAll()
{
return _context.Blog.Include(l => l.Posts).ToList();
}
这会产生错误:
语法错误:JSON.parse:JSON数据第1行第44列中对象的属性值之后的数据结尾
如何返回带有Blogs的多维Json,以及对于每个Blog条目所有帖子?
答案 0 :(得分:2)
解决方案:
这是JSON序列化中的错误。
将Startup.cs添加到Mvc ConfigureServices:
services.AddMvc()
.AddJsonOptions(options => options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
答案 1 :(得分:0)
尝试一下
[Route("api/[controller]")]
[ApiController]
....
[HttpGet]
public IActionResult GetAll()
{
return Ok(_context.Blog.Include(l => l.Posts).ToList());
}
如果您尝试将IActionResult异步包装在Task中