Язык программирования 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# по умолчанию поддерживается чувствительность к регистру символов. Политика именования соответствует настройке
PropertyNamingPolicyPropertyNamingPolicyCamelCaseПри десериализации JSON существует третий вариант — нейтральность к политике именования. Установка параметра
PropertyNameCaseInsensitivetruecanSubmergeCanSubmergeJsonSerializerOptions options = new(){ PropertyNameCaseInsensitive = true, IncludeFields = true};Обработка чисел с помощью JsonSerializer
Стандартным режимом обработки чисел является
StrictJsonSerializerOptionsNumberHandlingJsonNumberHandling
Перечисление
JsonNumberHandlingflagsJsonSerializerOptions 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
В случае применения класса
JsonSerializerOptionJsonSerializerOptions 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,