gpt4 book ai didi

c# - .NET 核心 : Remove empty array from Json response

转载 作者:太空宇宙 更新时间:2023-11-03 12:10:30 25 4
gpt4 key购买 nike

我遇到了与 Json 响应相关的问题。以下是响应示例:

public class ContentModel
{
public int? Total { get; set; }
public IEnumerable<ContentResultModel> Results { get; set; }
public FullContentModel Result { get; set; }
public IEnumerable<PaginationModel> Pagination { get; set; }

public IEnumerable<ContentCommentsModel> Comments { get; set; }
}

我不希望分页出现在响应中,如果它是空的。例如,当它为 null 时,我使用:

options.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;

有没有类似的东西可以解决我的问题?我已经搜索过,几乎每个人都使用正则表达式,但我想避免这种情况,并希望尽可能使用更直接、更简单的东西。

即使我说 pagination 属性为空,它也总是变为空。谢谢。

最佳答案

当列表为空时,您可以使用 ShouldSerialize 方法轻松扩展您的类定义,以省略 Pagination 属性。您可以在 Json.Net docs 中找到更多信息。 .

public class ContentModel
{
public int? Total { get; set; }
public IEnumerable<ContentResultModel> Results { get; set; }
public FullContentModel Result { get; set; }
public IEnumerable<PaginationModel> Pagination { get; set; }

public IEnumerable<ContentCommentsModel> Comments { get; set; }

public bool ShouldSerializePagination()
{
// don't serialize the Pagination property, when the list is empty
return Pagination != null && Pagination.Count() > 0;
}
}

示例用法:然后,您可以在 ApiController 中返回类型为 ContentModel 的对象,当列表为 null 或为空时,分页属性将不会出现在 JSON 响应中。

[HttpGet]
public ActionResult<ContentModel> Get()
{
var model = new ContentModel
{
Total = 12
};

return Ok(model);
}

关于c# - .NET 核心 : Remove empty array from Json response,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52537112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com