72、.NET 中的序列化:CLR 与 JSON

.NET 中的序列化:CLR 与 JSON

在 .NET 开发中,序列化是一个重要的概念,它允许将对象转换为可以存储或传输的格式,反之亦然。本文将介绍两种序列化方式:CLR 序列化和 JSON 序列化,并深入探讨它们的特点、使用方法以及适用场景。

1. CLR 序列化

CLR 序列化内置于运行时本身,并非仅仅是一个库特性。不过,它已被弃用许久,在 .NET 的最新版本中,默认情况下该功能已被禁用。微软还宣布,在 .NET 9.0 中会移除允许重新启用它的设置。但由于它曾提供过独特且实用的功能,仍有人会考虑使用它。

1.1 CLR 序列化的优点
  • 处理对象引用 :当序列化包含多个指向同一对象的列表时,CLR 序列化会检测到这种情况,仅存储该对象的一个副本。在反序列化时,会重新创建“一个对象多个引用”的结构,避免了重复,也不会因循环引用而产生问题。
  • 支持派生类型 :如果列表中包含从同一基类派生的多种类型,CLR 反射能检测到这一点。反序列化列表时,会创建与原始列表中相同类型的对象。
  • 使用简单 :只需为类型应用 [Serializable] 属性,CLR 就会自动处理序列化时写出对象所有字段,以及反序列化时读回这些字段的过程。
1.2 CLR 序列化的缺点

CLR 序列化几乎无法避免安全问题。因为序列化流描述了要创建的对象类型以及这些对象中所有字段的值。如果构建的系统接受序列化流作为输入(例如通过网络),

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值