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