如何在 GET-Method 中排除 JSON 中的某些模型字段?

Posted

技术标签:

【中文标题】如何在 GET-Method 中排除 JSON 中的某些模型字段?【英文标题】:How to exlude some model fields in JSON in GET-Method? 【发布时间】:2021-11-18 13:44:02 【问题描述】:

我正在使用 ASP.NET Core 编写我的第一个 WEB-Api。当我以 JSON 形式返回项目时,我不想在 JSON 响应中包含诸如 PhotoID 之类的字段。怎么实现?

    [HttpGet("type")]
    public async Task<ActionResult> GetItems(int page, int count, string type)
    
        var itemsCount = _context.ClothesItems.Where(i => i.Type == type).Count();
        var amountToSkip = page == 1 ? 0 : page * count;
        var amountToTake = count - amountToSkip;

        if (amountToSkip >= itemsCount || count > amountToTake) 
            return BadRequest("The number of item need to take is out of range!");

        var clothesItems = await _context.ClothesItems.Where(i=> i.Type==type)
                                                      .Include("Photos")
                                                      .Skip(amountToSkip)
                                                      .Take(amountToTake)
                                                      .ToListAsync();

        var responsesStatusCode = Response.StatusCode;

        var result = new
        
            items = clothesItems,
            total = itemsCount,
            statusCode = responsesStatusCode,
        ;

        return new JsonResult(result);
    

[1]:https://i.stack.imgur.com/I5wYq.jpg - json

【问题讨论】:

请不要添加 JSON 响应,而是将其作为“代码”示例包含在帖子中,以便帖子更清晰,更容易回答 请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:

您可以在照片模型中使用[JsonIgnore] 属性来防止它被反序列化。但是,如果您计划使用与请求正文相同的模型,这也会阻止从请求中捕获此值。

考虑查看此内容以获取更多信息:https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-ignore-properties?pivots=dotnet-5-0

【讨论】:

以上是关于如何在 GET-Method 中排除 JSON 中的某些模型字段?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JsonConverter 在 System.Text.Json.JsonSerializer.Serialize() 中排除属性被序列化

序列化:如何排除 json 响应中的实体列,但不排除 Nestjs 中的内部查询

如何从控制器 JSON 返回的实体字段中排除。 NestJS + Typeorm

带有 TypeScript 解析器/插件的 ESLint:如何包含从 tsconfig.json 中排除的 .spec.ts?

如何在搜索 api 中排除转发和回复?

如何在 Jackson 中记录 JSON 反序列化