Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
using (Stream fStream = new FileStream(fileName, FileMode.Open))
{
T obj = default;
obj = (T)xmlFormat.Deserialize(fStream);
return obj;
}
}
Добавьте к операторам верхнего уровня следующий код, чтобы восстановить XML-разметку обратно в объекты (или списки объектов):
JamesBondCar savedCar = ReadAsXmlFormat<JamesBondCar>("CarData.xml");
Console.WriteLine("Original Car: {0}",savedCar.ToString());
Console.WriteLine("Read Car: {0}",savedCar.ToString());
List<JamesBondCar> savedCars =
ReadAsXmlFormat<List<JamesBondCar>>("CarCollection.xml");
Сериализация и десериализация с помощью System.Text.Json
В пространстве имен
System.Text.Json
System.Text.Json.JsonSerializer
Управление генерацией данных JSON
По умолчанию
JsonSerializer

Сериализация объектов с использованием JsonSerializer
Класс
JsonSerializer
Serialize()
Program.cs
static void SaveAsJsonFormat<T>(T objGraph, string fileName)
{
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
JsonSerialize
[Jsonlnclude]
JsonSerializationOptions
JsonExclude
Модифицируйте метод
SaveAsJsonFormat()
static void SaveAsJsonFormat<T>(T objGraph, string fileName)
{
<b> var options = new JsonSerializerOptions</b>
<b> {</b>
<b> IncludeFields = true,</b>
<b> };</b>
File.WriteAllText(fileName,
System.Text.Json.JsonSerializer.Serialize(objGraph, options));
}
Вместо применения класса
JsonSerializerOptions
Xml
JsonSerializer
// Radio.cs
public class Radio
{
<b> [JsonInclude]</b>
public bool HasTweeters;
<b> [JsonInclude]</b>
public bool HasSubWoofers;
<b> [JsonInclude]</b>
public List<double> StationPresets;
<b> [JsonInclude]</b>
public string RadioId = "XF-552RR6";
...
}
// Car.cs
public class Car
{
<b> [JsonInclude]</b>
public Radio TheRadio = new Radio();