跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C#

.NET 序列化与反序列化实战:XML、JSON、二进制及 SOAP

综述由AI生成在 .NET 开发中,序列化是将对象状态转换为可传输格式的关键步骤。对比了 JSON、XML、二进制及 SOAP 四种主流方案,分析了各自适用场景与实现细节。重点探讨了 System.Text.Json 的现代用法、XmlSerializer 的配置要求以及二进制序列化的性能考量,旨在帮助开发者根据业务需求选择最优的数据交换策略,避免常见兼容性与安全风险。

ApiHolic发布于 2020/8/12更新于 2026/6/216 浏览
.NET 序列化与反序列化实战:XML、JSON、二进制及 SOAP

.NET 序列化与反序列化实战

在分布式系统或数据持久化场景中,对象状态转换为可传输格式是基础需求。.NET 提供了多种机制支持这一过程,包括 JSON、XML、二进制流以及 SOAP。本文将结合实战场景,梳理不同序列化方案的选择策略与实现细节。

为什么需要序列化?

内存中的对象无法直接通过网络传输或存入磁盘。序列化将对象图转换为字节流或文本,反序列化则还原为对象实例。选择合适的方案直接影响性能、兼容性与安全性。

JSON:现代 Web 首选

对于 RESTful API 交互,JSON 是事实标准。.NET Core 推荐使用 System.Text.Json,相比旧版 Newtonsoft.Json 性能更优且无需额外依赖。

using System.Text.Json;

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
}

var user = new User { Id = 1, Name = "Alice" };
var json = JsonSerializer.Serialize(user);
var deserialized = JsonSerializer.Deserialize<User>(json);

注意属性命名大小写敏感,默认遵循驼峰或 Pascal 命名约定,可通过 JsonSerializerOptions 调整。

XML:遗留系统与互操作

尽管 JSON 流行,但在企业级服务或配置文件中,XML 依然常见。XmlSerializer 是内置支持,适合处理复杂结构或文档型数据。

using System.Xml.Serialization;

[Serializable]
public class Config
{
    public string Key { get; set; }
}

var serializer = new XmlSerializer(typeof(Config));
using var writer = new StringWriter();
serializer.Serialize(writer,  Config { Key =  });
new
"Value"

需确保类带有 [Serializable] 或使用公共参数less 构造函数,否则反序列化可能失败。

二进制:高性能存储

当带宽受限或追求极致速度时,二进制序列化更高效。虽然 BinaryFormatter 因安全漏洞已被弃用,但通过 MemoryStream 配合自定义协议仍可实现紧凑存储。

public class SerializeHelper
{
    public static byte[] BinarySerialize(object obj)
    {
        using var ms = new MemoryStream();
        // 此处建议使用 Protobuf 或 MessagePack 替代 BinaryFormatter
        // 示例仅展示流操作逻辑
        return ms.ToArray();
    }
}

实际生产中建议采用 Protocol Buffers 等第三方库,避免版本兼容性陷阱。

SOAP:传统 Web 服务

SOAP 基于 XML 协议,常用于 WCF 服务。虽然新项目较少使用,但在维护旧系统时仍需了解。它强调严格的契约定义与 WS-* 标准。

总结

没有万能方案。JSON 适合通用接口,XML 适合配置与文档,二进制适合内部高频通信。根据业务场景权衡体积、速度与兼容性,才是工程化的关键。

目录

  1. .NET 序列化与反序列化实战
  2. 为什么需要序列化?
  3. JSON:现代 Web 首选
  4. XML:遗留系统与互操作
  5. 二进制:高性能存储
  6. SOAP:传统 Web 服务
  7. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Dify 工作流实战:快速搭建专业 Web 登录界面
  • AI 绘画在商业设计中的应用与版权探讨
  • Meta:BackTranslation 与 IBM Self Alignment 技术解析
  • AI 辅助编程的边界探索:当 Copilot 学会写测试
  • Ubuntu 403 软件包下载错误解决方法
  • Spring 事务管理核心:@Transactional 注解与传播机制
  • 算法基础:前缀和技巧与区间求和优化
  • 基于高云 FPGA 与 STM32 的 FMC 通信协议实现
  • RKNN 8 位量化全解析:算法差异与粒度选择实战指南
  • IntelliJ IDEA 切换 JDK 版本完整指南
  • IPv6+DDNS-GO 连接故障排查与三种替代方案对比
  • C++ TCP Socket 网络编程基础与封装实战
  • 飞算 JavaAI:基于自然语言的 Java 全栈工程生成实践
  • 开源模型 Prompt 实验报告:Mistral 与 Qwen 对比分析
  • 互联网 HR 招聘实录:张一鸣与业务负责人的用人观
  • OpenClaw 配置与 QQ 机器人接入指南
  • ToDesk ToClaw AI 科技新闻日报自动化实战
  • Ling Studio 深度评测:万亿参数模型如何重塑 AI 开发工作流
  • Agent 上下文注入原理与 Web 架构映射实战
  • Query 处理流程与数据结构解析

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online