В конечных точках API отсутствуют свойства с нулевым значением? - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть пара конечных точек, которые возвращают jsons с отсутствующими свойствами, эти свойства являются нулевыми - это отключено по умолчанию, и если да, то как мне включить это?

    services.AddMvc(options => options.EnableEndpointRouting = false)
        .AddJsonOptions(options => options.JsonSerializerOptions.IgnoreNullValues = false)
        .AddJsonOptions(option => option.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()));

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Поскольку он не указан, я предполагаю, что вы используете ASP. NET Core 3. Ответ был бы другим, если бы вы использовали ASP. NET Core 2.x.

Если вы используете NewtonfSoft.Json

Вы можете настроить способ сериализации JSON с помощью метода расширения AddNewtonsoftJson (в вашем Startup.cs):

var mvcBuilder = services
    .AddMvc(options =>
    {
    })
    .AddNewtonsoftJson(options =>
    {
        var jsonSettings = options.SerializerSettings;
        jsonSettings.NullValueHandling = NullValueHandling.Include;
    });

Вы ищете свойство NullValueHandling: использование NullValueHandling.Ignore пропустит сериализацию любого свойства со значением null, а использование NullValueHandling.Include приведет к сериализации null свойств.

Для получения более подробной информации вы можете прочитать полную документацию SerializerSettings.

Если вы используете System.Json

Это та же идея. Вы можете настроить способ сериализации JSON с помощью метода расширения AddJsonOptions (в вашем Startup.cs):

var mvcBuilder = services
    .AddMvc(options =>
    {
    })
    .AddJsonOptions(options =>
    {
        var jsonSettings = options.JsonSerializerOptions;
        jsonSettings.IgnoreNullValues = false;
    });

Вы можете прочитать полную документацию JsonSerializerOptions для более подробной информации.

0 голосов
/ 28 апреля 2020

Вам необходимо настроить JsonSerializer

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