PropertyNameCaseInsensitive = true,
IncludeFields = true
};
Обработка чисел с помощью JsonSerializer
Стандартным режимом обработки чисел является Strict
JsonSerializerOptions имеется свойство NumberHandling, которое управляет чтением и записью чисел. В табл. 20.14 перечислены значения, доступные в перечислении JsonNumberHandling.Перечисление JsonNumberHandling
flags, который делает возможным побитовое сочетание его значений. Например, если вы хотите читать строки (и числа) и записывать числа в виде строк, тогда применяйте следующую настройку:JsonSerializerOptions options = new
{
...
NumberHandling = JsonNumberHandling.AllowReadingFromString &
JsonNumberHandling.
WriteAsString};
При таком изменении данные JSON, созданные для класса Car
{
"canFly": true,
"canSubmerge": false,
"theRadio": {
"hasTweeters": true,
"hasSubWoofers": false,
"stationPresets": [
"89.3",
"105.1",
"97.1"
],
"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 objGraph, string fileName)
=> File.WriteAllText(fileName,
System.Text.Json.JsonSerializer.Serialize(objGraph,
options));Стандартные настройки свойств JsonSerializer для веб-приложений
При построении веб-приложений вы можете применять специализированный конструктор для установки следующих свойств:
PropertyNameCaseInsensitive = true,
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
NumberHandling = JsonNumberHandling.AllowReadingFromString
Вы по-прежнему можете устанавливать дополнительные свойства через инициализацию объектов, например:
JsonSerializerOptions options = new(JsonSerializerDefaults.Web)
{
WriteIndented = true
};
Сериализация коллекций объектов
Сериализация коллекций объектов в данные JSON выполняется аналогично сериализации одиночного объекта. Поместите приведенную далее локальную функцию в конец операторов верхнего уровня:
static void SaveListOfCarsAsJson(JsonSerializerOptions options, string fileName)
{
// Сохранить список List
List
{
new JamesBondCar { CanFly = true, CanSubmerge = true },
new JamesBondCar { CanFly = true, CanSubmerge = false },
new JamesBondCar { CanFly = false, CanSubmerge = true },
Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT