如何在.NET Core中返回包含多对多关系的JSON对象

13 浏览
0 Comments

如何在.NET Core中返回包含多对多关系的JSON对象

我无法将一个JSON对象返回给前端。我使用的是ASP.NET Core 2.0 WebApi,_context都正常,并且也连接成功了。我在调试中可以看到数据,但是我不知道如何返回它。

            var user = _context.Users.FirstOrDefault(u => u.Username == User.Identity.Name);
            var orders = _context.Orders
                .Where(o => o.UserId == user.Id)
                .Include(o => o.City)
                .Include(o => o.Products)
                    .ThenInclude(products => products.Product)
                .ToList();
            return new ObjectResult(new { orders = orders }) { StatusCode = 200 };

我希望在前端看到的是:

{"orders": [

{

"orderId": "1"

"orderCode":"SAJVLUHC",

"products" : [pr1...prn]

},{

"orderId": "2"

"orderCode":"SAJVLUHC",

"products" : [pr1...prn]

}

]

}

0
0 Comments

在.NET Core中,如果存在多对多的关系,可能会导致无法返回JSON对象。这是因为JSON序列化在处理循环引用时可能会失败。解决这个问题的方法是在配置中添加以下代码:

services.AddMvc().AddJsonOptions(options =>
{
    options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
});

这段代码会将JSON序列化配置为忽略循环引用。这样就可以成功返回包含多对多关系的JSON对象了。

0