Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
"hasTweeters": true,
"hasSubWoofers": false,
"stationPresets": [
89.3,
105.1,
97.1
],
"radioId": "XF-552RR6"
},
"isHatchBack": false
}
При чтении данных JSON в коде C# по умолчанию поддерживается чувствительность к регистру символов. Политика именования соответствует настройке
PropertyNamingPolicy
PropertyNamingPolicy
CamelCase
При десериализации JSON существует третий вариант — нейтральность к политике именования. Установка параметра
PropertyNameCaseInsensitive
true
canSubmerge
CanSubmerge
JsonSerializerOptions options = new()
{
PropertyNameCaseInsensitive = true,
IncludeFields = true
};
Обработка чисел с помощью JsonSerializer
Стандартным режимом обработки чисел является
Strict
JsonSerializerOptions
NumberHandling
JsonNumberHandling

Перечисление
JsonNumberHandling
flags
JsonSerializerOptions options = new()
{
...
NumberHandling = JsonNumberHandling.AllowReadingFromString &
JsonNumberHandling.
WriteAsString
};
При таком изменении данные JSON, созданные для класса
Car
{
"canFly": true,
"canSubmerge": false,
"theRadio": {
"hasTweeters": true,
"hasSubWoofers": false,
"stationPresets": [
<b> "89.3",</b>
<b> "105.1",</b>
<b> "97.1"</b>
],
"radioId": "XF-552RR6"
},
"isHatchBack": false
}
Потенциальные проблемы, связанные с производительностью, при использовании JsonSerializerOption
В случае применения класса
JsonSerializerOption
JsonSerializerOptions options = new()
{
PropertyNameCaseInsensitive = true,
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
IncludeFields = true,
WriteIndented = true,
NumberHandling =
JsonNumberHandling.AllowReadingFromString
|
JsonNumberHandling.
WriteAsString
};
SaveAsJsonFormat(options, jbc, "CarData.json");
Console.WriteLine("=> Saved car in JSON format!");
SaveAsJsonFormat(options, p, "PersonData.json");
Console.WriteLine("=> Saved person in JSON format!");
static void SaveAsJsonFormat<T>(JsonSerializerOptions options,
T objGraph, string fileName)
=> File.WriteAllText(fileName,
System.Text.Json.JsonSerializer.Serialize(objGraph,
options));
Стандартные настройки свойств JsonSerializer для веб-приложений
При построении веб-приложений вы можете применять специализированный конструктор для установки следующих свойств:
PropertyNameCaseInsensitive = true,