从Web API响应中删除$ id

问题描述

我有一个Web API 5.0,它返回了一个相当基本的对象的dto。这是课程

[JsonObject(IsReference = false)] 
public class BillToReturnDto
{
    public string id { get; set; } 
    public string organizationId { get; set; } 

}

但是当我返回列表时,它会像这样

{ “ $ id”:“ 1”, “ $ values”:[ { “ $ id”:“ 2”, “ id”:“ rvKLS178QWyWJu0tgESTnA”, “ organizationId”:“ ujoF624LSVyyQFapjauyAw”, }, { “ $ id”:“ 2”, “ id”:“ xvWfrRQWyyG0tgEd53dW”, “ organizationId”:“ ujoF624LSVyyQFapjauyAw”, } ] }

如何删除这些ID?我尝试过IsReference为false,因为您看不到

更新:

这是控制器方法

    public async Task<ActionResult> Get()
    {
        var userId = User.FindFirst("Id").Value;
        var accesstoken = await _userService.GetAccesstoken(Convert.ToInt32(userId));
        var bills = await _shoppingService.GetBills(accesstoken);
        var billsToReturn = _mapper.Map<List<BillToReturnDto>>(bills.bills);
        return Ok(billsToReturn);
    }

解决方法

startup.cs 中的这一行可能会在我的情况下造成问题:

   services.AddControllers()
                .AddJsonOptions(options =>
                {
                    options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.Preserve;
                });

删除 .AddJsonOptions([....]) 并查看它是否适合您。