По умолчанию JsonSerializer
Сериализация объектов с использованием JsonSerializer
Класс JsonSerializer
Serialize, применяемые для преобразования объектов .NET Core (включая графы объектов) в строковое представление открытых свойств. Данные представляются как пары "имя-значение" в формате JSON. Добавьте в файл Program.cs показанную ниже локальную функцию:static void SaveAsJsonFormat
{
File.WriteAllText(fileName,
System.Text.Json.JsonSerializer.Serialize(objGraph));
}
Добавьте к своим операторам верхнего уровня следующий код:
SaveAsJsonFormat(jbc, "CarData.json");
Console.WriteLine("=> Saved car in JSON format!");
SaveAsJsonFormat(p, "PersonData.json");
Console.WriteLine("=> Saved person in JSON format!");
Когда вы будете исследовать файлы JSON, вас может удивить тот факт, что файл CarData.json
PersonData.json содержит только значение Firstname. Причина в том, что JsonSerializer по умолчанию записывает только открытые Включение полей
Включить открытые поля в генерируемые данные JSON можно двумя способами. Первый способ предусматривает использование класса JsonSerializerOptions
JsonSerializer о необходимости включить все поля. Второй способ предполагает модификацию классов за счет добавления атрибута [Jsonlnclude] к каждому открытому полю, которое должно быть включено в вывод JSON. Обратите внимание, что при первом способе (применение JsonSerializationOptions) будут включаться все открытые поля в графе объектов. Чтобы исключить отдельные открытые поля с использованием такого приема, вам придется использовать для этих полей атрибут JsonExclude.Модифицируйте метод SaveAsJsonFormat
static void SaveAsJsonFormat
{
var options = new JsonSerializerOptions
{
IncludeFields = true,
};
File.WriteAllText(fileName,
System.Text.Json.JsonSerializer.Serialize(objGraph, options));
}
Вместо применения класса JsonSerializerOptions
Xml и они не будут помехой JsonSerializer):// Radio.cs
public class Radio
{
[JsonInclude]
public bool HasTweeters;
[JsonInclude]
public bool HasSubWoofers;
[JsonInclude]
public List
[JsonInclude]
public string RadioId = "XF-552RR6";
...
}
// Car.cs
public class Car
{
[JsonInclude]
public Radio TheRadio = new Radio;
[JsonInclude]
public bool IsHatchBack;
...
}
// JamesBondCar.cs
public class JamesBondCar : Car
{
[XmlAttribute]
[JsonInclude]
public bool CanFly;
[XmlAttribute]
[JsonInclude]
public bool CanSubmerge;
...
}
// Person.cs
public class Person
{
// Открытое поле.
[JsonInclude]
public bool IsAlive = true;
...
}
Теперь в результате запуска кода любым способом все открытые свойства и поля записываются в файл. Однако, заглянув содержимое файла, вы увидите, что данные JSON были записаны в
Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT