.NET C#基础教程第30天: XML 与 JSON 序列化

作者:微信公众号:【架构师老卢】
6-10 10:34
38

概述:介绍序列化涉及将对象转换为易于存储的格式的过程。本文演示了旧 XML 序列化的问题,以及 JSON 序列化如何提高效率和有效性。学习目标XML 序列化的缺点JSON 序列化的优点开发人员的先决条件基本了解 C# 编程语言。开始XML 序列化的缺点传统上,许多开发人员都使用 XML 序列化,如以下代码段所示。// Using XmlSerializer for data serializationprivate string SerializeObjectToXmlT(T obj){ var serializer = new XmlSerializer(typeof(T)); usi

介绍

序列化涉及将对象转换为易于存储的格式的过程。本文演示了旧 XML 序列化的问题,以及 JSON 序列化如何提高效率和有效性。

学习目标

  • XML 序列化的缺点
  • JSON 序列化的优点

开发人员的先决条件

  • 基本了解 C# 编程语言。

开始

XML 序列化的缺点

传统上,许多开发人员都使用 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 压力。

JSON 序列化的优点

请在下面找到使用库的上一个代码片段的重构版本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; }  
}

从 main 方法执行,如下所示

#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

相关代码下载地址
重要提示!:取消关注公众号后将无法再启用回复功能,不支持解封!
第一步:微信扫码关键公众号“架构师老卢”
第二步:在公众号聊天框发送code:84516,如:code:84516 获取下载地址
第三步:恭喜你,快去下载你想要的资源吧
阅读排行