ASP.NET Core 5 返回 JSON 添加 $id 和 $values 属性

Utt*_*eja 12 json .net-core asp.net-core asp.net-core-webapi asp.net-core-5.0

我正在使用 ASP.NET Core 5。如下所示,我正在使用System.Text.Json

public IActionResult Index()
{
   var result = GetAllMenuItems(); 
   return Ok(result);
}
Run Code Online (Sandbox Code Playgroud)

我的 JSON 的预期形状是:

[
    {
        "NameEn": "omlet en",
        "MenuId": 258,
        "Categories": [
            {
                "MenuCategoryEn": "Lunch En",
                "Id": 175
            },
            {
                "MenuCategoryEn": "Dinner En",
                "Id": 176
            }
        ],
        "Id": 213
    }
]
Run Code Online (Sandbox Code Playgroud)

但它是$id用随机数生成的,并将实际数据包装在其中$value

{
  $id: "1",
  $values: [
    {
      $id: "2",
      nameEn: "omlet en",
      menuId: 258,
      categories: {
        $id: "3",
        $values: [
          {
            $id: "4",
            menuCategoryEn: "Lunch En",
            id: 175
          },
          {
            $id: "6",
            menuCategoryEn: "Dinner En",
            id: 176
          }
        ]
      },
      id: 213
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

类如下,包含多对多导航属性

public class MenuItem : BaseEntity
{
    public string NameEn { get; set; }
    public long MenuId { get; set; }
    public List<MenuCategory> Categories { get; set; } = new();
    public Menu Menu { get; set; }
}
public partial class MenuCategory : BaseEntity
{
    public string MenuCategoryEn { get; set; }
    public List<MenuItem> MenuItems { get; set; } = new();
}
Run Code Online (Sandbox Code Playgroud)

有没有适当的解决方案来解决这个问题?

mj1*_*313 20

您是否像下面这样在 stratup 中配置 JsonOptions ?

options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.Preserve;
Run Code Online (Sandbox Code Playgroud)

不要假装ReferenceHandlerPreserve这样做了。

options.JsonSerializerOptions.ReferenceHandler = null;
Run Code Online (Sandbox Code Playgroud)