在C#中实现对象序列化的几种常用方式

 更新时间:2026年04月14日 08:36:58   作者:深圳市由你创科技  
文章主要介绍了实现对象序列化之前的准备工作,以及在C#中实现对象序列化主要有二进制序列化、XML序列化和JSON序列化三种常用方式,并对每种方式的具体实现进行了说明,需要的朋友可以参考下

在实现之前,先要做一些准备工作,序列化其实是对象和字符串(文件)之间的互相转换,所以首先我们准备好一个实体类,很简单的Person类:

using System.Text.Json;
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Email { get; set; }
}
Person person = new Person { Name = "张三", Age = 25, Email = "zhang@example.com" };

在 C# 中实现对象序列化主要有以下几种常用方式:

一、二进制

二进制序列化及反序列化的方式主要是使用BinaryFormatter这个类,类名上面要加上[Serializable],不加无法序列化,序列化代码如下:

[Serializable]
public class Person { 
   public string Name { get; set; } 
   public int Age { get; set; } 
   public string Email { get; set; } 
}
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream fs = new FileStream("data.bin", FileMode.Create))
{
    formatter.Serialize(fs, person );
}
// 反序列化
using (FileStream fs = new FileStream("data.bin", FileMode.Open))
{
    DataObject deserializedObj = (DataObject)formatter.Deserialize(fs);
}

二、XML

XML序列化可提高可读性,以及对象共享和使用的灵活性,XML序列化将对象的公共字段和属性或方法的参数和返回值序列化成符合特定XML格式的流。

XML序列化代码如下:

[Serializable]
public class Person { 
  public string Name { get; set; } 
  public int Age { get; set; } 
  public string Email { get; set; } 
}
using System.Xml.Serialization;
using System.IO;
XmlSerializer serializer = new XmlSerializer(typeof(Person));
using (StringWriter writer = new StringWriter())
{
    serializer.Serialize(writer, person);
    string xmlString = writer.ToString();
    Console.WriteLine(xmlString);
}
// 反序列化
using (StringReader reader = new StringReader(xmlString))
{
    Person deserializedObj = (Employee)serializer.Deserialize(reader);
}

三、JSON

JSON序列化是目前使用很多的一种方式,实现JSON序列化的方式也有很多,一般会使用NewSoft.Json这个库来做,可以通过Nuget搜索安装。

// 序列化
string json = JsonConvert.SerializeObject(person);
// 反序列化
Product deserializedProduct = JsonConvert.DeserializeObject<Person>(json);
// 格式化输出
string formattedJson = JsonConvert.SerializeObject(product, Formatting.Indented);

到此这篇关于在C#中实现对象序列化的几种常用方式的文章就介绍到这了,更多相关C#对象序列化方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#使用DevExpress中的XtraCharts控件实现图表

    C#使用DevExpress中的XtraCharts控件实现图表

    这篇文章介绍了C#使用DevExpress中的XtraCharts控件实现图表的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C#并行编程之数据并行Tasks.Parallel类

    C#并行编程之数据并行Tasks.Parallel类

    这篇文章介绍了C#并行编程之数据并行Tasks.Parallel类,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 基于c# 类、接口、结构的联系与区别详解

    基于c# 类、接口、结构的联系与区别详解

    本篇文章是对c#中类与接口以及结构的联系与区别进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 基于C#设计一个双色球选号工具

    基于C#设计一个双色球选号工具

    这篇文章主要为大家详细介绍了如何利用C#设计实现一个双色球选号工具,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • C# WPF编程之Application类的使用详解

    C# WPF编程之Application类的使用详解

    每个运行中的WPF应用程序都由System.Windows.Application类的一个实例来表示,该类跟踪在应用程序中打开的所有窗口,决定何时关闭应用程序,下面就跟随小编一起来深入了解下Application类的使用吧
    2024-04-04
  • Unity编辑器资源导入处理函数OnPreprocessAudio用法示例

    Unity编辑器资源导入处理函数OnPreprocessAudio用法示例

    这篇文章主要为大家介绍了Unity编辑器资源导入处理函数OnPreprocessAudio用法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • C#计算器编写代码

    C#计算器编写代码

    这篇文章主要为大家分享了C#计算器编写代码,供大家参考,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • C#读写EXCEL单元格的问题实现

    C#读写EXCEL单元格的问题实现

    这篇文章主要介绍了C#读写EXCEL单元格的问题实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • C#代码实现从PDF中提取表格并另存为Excel文件

    C#代码实现从PDF中提取表格并另存为Excel文件

    这篇文章主要为大家详细介绍了如何使用 Spire.Office for .NET将 PDF 中的表格提取并导出为 Excel 文件,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2026-02-02
  • 浅谈C#.NET、JavaScript和JSON

    浅谈C#.NET、JavaScript和JSON

    本文介绍了C#.NET、JavaScript和JSON的相关知识,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02

最新评论