Запретить отображение нулевых значений в ответе API JSON - PullRequest
0 голосов
/ 27 мая 2020

У меня есть простой объект DTO вроде этого:

        var policyDetails = new PolicyDetailsDto
        {
            PolicyId = policy.Id,
            CustomerId = policy.CustomerId,
            AgentDetails = new AgentDetailsDto
            {
                AgencyName = offices?.MarketingName,
                AgencyPhoneNumbers = new List<string> { offices?.DapPhone, offices?.ContactPhone },
                AgentPhoneNumbers = new List<string> { employees?.BusinessPhone, employees?.HomePhone, employees?.MobilePhone }
            }
        };

Когда я возвращаю этот объект dto из моего API клиенту, я получаю нулевые значения, отображаемые для AgencyPhoneNumbers и AgentPhoneNumbers, например:

{
"policyId": "4185a3b8-4499-ea11-86e9-2818784dcd69",
"customerId": "afb2a6e3-37a4-e911-bcd0-2818787e45b7",
"agentDetails": {
    "agencyName": "ABC Agency",
    "agencyPhoneNumbers": [
        "999-666-4000",
         null
    ],
    "agentPhoneNumbers": [
        "5555555555",
        null,
        null
    ]
}}

Это класс AgentDetailsDto

[JsonObject(ItemNullValueHandling = NullValueHandling.Ignore)]
public class AgentDetailsDto
{
    public string AgencyName { get; set; }
    public List<string> AgencyPhoneNumbers { get; set; }
    public List<string> AgentPhoneNumbers { get; set; }
}

Как я могу предотвратить отображение нулевых значений в списке в моем ответе JSON?

1 Ответ

2 голосов
/ 27 мая 2020

Вы можете игнорировать нулевые значения в вашем WebApiConfig

config.Formatters.JsonFormatter.SerializerSettings = 
                 new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore};

, если вы используете. NET Core, вы можете использовать это

public void ConfigureServices(IServiceCollection services)
{
     services.AddMvc()
             .AddJsonOptions(options => {
                options.JsonSerializerOptions.IgnoreNullValues = true;
     });
}
...