RespectNullableAnnotations
При RespectNullableAnnotations = true
и #nullable enable свойство
string Name без ?
не принимает JSON null:
JsonException. Без флага
null записывается в такое свойство.
Синтаксис
options.RespectNullableAnnotations = true;
Пример
Давайте разобрать null с учётом аннотаций:
#nullable enable
using System;
using System.Text.Json;
class Item
{
public string Name { get; set; }
}
class Program
{
static void Main()
{
var options = new JsonSerializerOptions
{
RespectNullableAnnotations = true
};
try
{
JsonSerializer.Deserialize<Item>(
"{\"Name\":null}", options);
}
catch (JsonException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
"fail"
Пример
Давайте разобрать null без флага:
#nullable enable
using System;
using System.Text.Json;
class Item
{
public string Name { get; set; }
}
class Program
{
static void Main()
{
Item item = JsonSerializer.Deserialize<Item>(
"{\"Name\":null}");
bool res = item.Name == null;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте разобрать строку с флагом:
#nullable enable
using System;
using System.Text.Json;
class Item
{
public string Name { get; set; }
}
class Program
{
static void Main()
{
var options = new JsonSerializerOptions
{
RespectNullableAnnotations = true
};
Item item = JsonSerializer.Deserialize<Item>(
"{\"Name\":\"abcde\"}", options);
Console.WriteLine(item.Name);
}
}
Результат выполнения кода:
"abcde"
Смотрите также
-
JsonIgnoreCondition,
когда пропускать поле -
DefaultIgnoreCondition,
общее правило пропуска -
Deserialize,
разбор JSON -
JsonSerializerOptions,
объект настроек