序列化涉及将对象转换为易于存储的格式的过程。本文演示了旧 XML 序列化的问题,以及 JSON 序列化如何提高效率和有效性。
传统上,许多开发人员都使用 XML 序列化,如以下代码段所示。
// Using XmlSerializer for data serialization
private string SerializeObjectToXml<T>(T obj)
{
var serializer = new XmlSerializer(typeof(T));
using (var writer = new StringWriter())
{
serializer.Serialize(writer, obj);
return writer.ToString();
}
}
尽管 XML 是人类可读的并且全局支持,但它并不是 C# 编程语言中序列化的优化和高效选择。主要原因是它涉及很多临时对象,这些对象会影响内存使用和相应的 GC 压力。
请在下面找到使用库的上一个代码片段的重构版本NewtonSoft.Json
// Using Newtonsoft.Json for data serialization
private string SerializeObjectToJson<T>(T obj)
{
return JsonConvert.SerializeObject(obj);
}
上述库在速度和效率方面都表现出色。除此之外,JSON 文件的大小更小,这使得读取和写入速度更快。XmlSerializer
创建另一个名为的类,并添加以下代码片段EfficientSerialization
public static class EfficientSerialization
{
public static string XML<T>(T obj)
{
var serializer = new XmlSerializer(typeof(T));
using (var writer = new StringWriter())
{
serializer.Serialize(writer, obj);
return writer.ToString();
}
}
public static string JSON<T>(T obj)
{
return JsonConvert.SerializeObject(obj);
}
}
并创建一个模型类,如下所示
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
#region Day 30: Efficient Serialization
static string ExecuteDay30()
{
Person person = new Person { Name = "John Doe", Age = 30 };
// XML Serialization
string xmlData = EfficientSerialization.XML(person);
Console.WriteLine("XML Serialization Output:");
Console.WriteLine(xmlData);
// JSON Serialization
string jsonData = EfficientSerialization.JSON(person);
Console.WriteLine("JSON Serialization Output:");
Console.WriteLine(jsonData);
return "Executed Day 30 successfully..!!";
}
#endregion
XML Serialization Output:
<?xml version="1.0" encoding="utf-16"?>
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>John Doe</Name>
<Age>30</Age>
</Person>
JSON Serialization Output:
{"Name":"John Doe","Age":30}
源代码获取:公众号回复消息【code:84516
】