new JamesBondCar{CanFly = true, CanSubmerge = true},
new JamesBondCar{CanFly = true, CanSubmerge = false},
new JamesBondCar{CanFly = false, CanSubmerge = true},
new JamesBondCar{CanFly = false, CanSubmerge = false},
};
using (Stream fStream = new FileStream("CarCollection.xml",
FileMode.Create, FileAccess.Write, FileShare.None))
{
XmlSerializer xmlFormat = new XmlSerializer(typeof(List
xmlFormat.Serialize(fStream, myCars);
}
Console.WriteLine("=> Saved list of cars!");
}
Наконец, добавьте следующую строку, чтобы задействовать новую функцию:
SaveListOfCarsAsXml();
Десериализация объектов и коллекций объектов
Десериализация XML буквально противоположна сериализации объектов (и коллекций объектов). Рассмотрим показанную далее локальную функцию для десериализации XML-разметки обратно в граф объектов. И снова обратите внимание, что тип, с которым нужно работать, должен быть передан конструктору XmlSerializer
static T ReadAsXmlFormat
{
// Создать типизированный экземпляр класса XmlSerializer.
XmlSerializer xmlFormat = new XmlSerializer(typeof(T));
using (Stream fStream = new FileStream(fileName, FileMode.Open))
{
T obj = default;
obj = (T)xmlFormat.Deserialize(fStream);
return obj;
}
}
Добавьте к операторам верхнего уровня следующий код, чтобы восстановить XML-разметку обратно в объекты (или списки объектов):
JamesBondCar savedCar = ReadAsXmlFormat
Console.WriteLine("Original Car: {0}",savedCar.ToString());
Console.WriteLine("Read Car: {0}",savedCar.ToString());
List
ReadAsXmlFormat>("CarCollection.xml");
Сериализация и десериализация с помощью System.Text.Json
В пространстве имен System.Text.Json
System.Text.Json.JsonSerializer, который вы можете использовать для сохранения открытого состояния заданного объекта как данных JSON.Управление генерацией данных JSON
По умолчанию 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 по умолчанию записывает только открытые Включение полей