news 2026/4/14 9:43:28

C# 如何实现对象序列化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C# 如何实现对象序列化

在实现之前,先要做一些准备工作,序列化其实是对象和字符串(文件)之间的互相转换,所以首先我们准备好一个实体类,很简单的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);
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 9:43:20

STM32CubeMX实战指南:从环境搭建到流水灯项目烧录

1. STM32CubeMX环境搭建指南 第一次接触STM32开发时&#xff0c;最头疼的就是各种环境配置。记得我刚开始用标准库开发时&#xff0c;光是搭建开发环境就折腾了两天。直到后来发现了STM32CubeMX这个神器&#xff0c;才真正体会到什么叫"一键配置"。下面我就用最直白的…

作者头像 李华
网站建设 2026/4/14 9:41:14

AI头像生成器实战分享:如何用中文描述生成高质量提示词

AI头像生成器实战分享&#xff1a;如何用中文描述生成高质量提示词 1. 为什么需要专业的头像提示词生成工具 在AI绘图工具普及的今天&#xff0c;许多用户发现一个奇怪现象&#xff1a;明明输入了看似合理的描述&#xff0c;生成的图片却总是不尽如人意。特别是对于头像这种需…

作者头像 李华
网站建设 2026/4/14 9:40:53

丝杆升降机易损部件有哪些?

丝杆升降机并非“一劳永逸”&#xff0c;内部多个部件在长期运行后会正常磨损或老化。提前掌握易损件的更换周期&#xff0c;进行预防性维护&#xff0c;可以避免突发故障导致的停产事故。本文列出丝杆升降机最常见的6大易损部件&#xff0c;并提供详细的更换周期表和判断标准。…

作者头像 李华
网站建设 2026/4/14 9:39:53

亲测有效!Z-Image-Turbo解决AI绘画三大痛点:慢、黑、崩

亲测有效&#xff01;Z-Image-Turbo解决AI绘画三大痛点&#xff1a;慢、黑、崩 1. 痛点终结者&#xff1a;当AI绘画遇上Turbo引擎 作为一名长期被AI绘画"折磨"的设计师&#xff0c;我经历过太多崩溃时刻&#xff1a;等待生成的进度条仿佛永远走不完&#xff0c;好不…

作者头像 李华
网站建设 2026/4/14 9:38:57

WaveTools终极指南:三步解锁鸣潮帧率与全面优化方案

WaveTools终极指南&#xff1a;三步解锁鸣潮帧率与全面优化方案 【免费下载链接】WaveTools &#x1f9f0;鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools WaveTools是一款专为《鸣潮》玩家设计的开源工具箱&#xff0c;通过智能帧率解锁和画质优化…

作者头像 李华
网站建设 2026/4/14 9:38:04

【DeepSeek】ELF 中的PT_LOAD

在 ELF&#xff08;Executable and Linkable Format&#xff09;文件格式中&#xff0c;PT_LOAD 是程序头表中最重要的段类型。以下是对 PT_LOAD 的定义、具体包含的种类以及与其类似的其他段类型的完整解析。1. 什么是 PT_LOAD&#xff1f; 定义&#xff1a; PT_LOAD 表示一个…

作者头像 李华