信息发布→ 登录 注册 退出

C#怎么序列化和反序列化Dictionary

发布时间:2025-12-14

点击量:
C#中推荐用System.Text.Json序列化Dictionary,它轻量高效且开箱即用;Newtonsoft.Json更灵活,支持非字符串键;XmlSerializer不支持Dictionary默认序列化;BinaryFormatter已过时且不安全。

c#怎么序列化和反序列化dictionary<tkey, tvalue>

C# 中序列化和反序列化 Dictionary<tkey tvalue></tkey> 很常见,但要注意它默认不支持 XML 序列化(因为没无参构造函数 + 索引器不满足要求),而 JSON 和二进制方式更直接可靠。

用 System.Text.Json(推荐,.NET Core 3.0+)

这是目前最轻量、高性能、且开箱即用的方式,支持泛型字典。

  • 序列化:JsonSerializer.Serialize(dictionary)
  • 反序列化:JsonSerializer.Deserialize<dictionary int>>(json)</dictionary>(需指定具体类型)
  • 注意:键类型必须是 string 或可转为 string 的类型(如枚举会转成名称),否则要自定义 JsonConverter

用 Newtonsoft.Json(兼容旧项目)

功能更灵活,对非字符串键支持更好(比如用 int 当 key 也能正常序列化)。

  • 序列化:JsonConvert.SerializeObject(dict)
  • 反序列化:JsonConvert.DeserializeObject<dictionary string>>(json)</dictionary>
  • 可配合 JsonSerializerSettings 控制日期格式、空值处理等

避免用 XmlSerializer(不推荐用于 Dictionary)

XmlSerializer 要求类型有无参构造函数、公共读写属性或字段,而 Dictionary<k></k> 不满足这些条件,直接用会报错。

挖错网 挖错网

一款支持文本、图片、视频纠错和AIGC检测的内容审核校对平台。

挖错网 185 查看详情 挖错网
  • 若必须用 XML,可先转成 List<keyvaluepair>></keyvaluepair> 再序列化
  • 或封装一层类,把字典作为 public 属性暴露,并提供无参构造函数

二进制序列化(仅限 .NET Framework 或启用 NetCoreAppCompat)

BinaryFormatter 已被标记为过时且不安全,不建议在新项目中使用。如确需二进制,可用 System.Text.Json + MemoryStream 手动转换,或选第三方库如 MessagePack。

基本上就这些,日常开发优先选 System.Text.Json,兼容老代码或需要高级控制时再上 Newtonsoft.Json。

以上就是C#怎么序列化和反序列化Dictionary的详细内容,更多请关注其它相关文章!


相关文章: 印象笔记怎样用批量导出备知识库_印象笔记用批量导出备知识库【备份方法】  在J*a中如何使用Stream.map转换元素_Stream映射操作解析  纯CSS与HTML网格布局的HTML精简策略:SVG与JS方案解析  顺丰快递查单号物流信息 顺丰快递小程序查询入口  在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明  Python Socket多播通信中指定源IP地址的实践指南  韩剧圈正版入口页面_韩剧圈官网登录链接  极兔快递快件信息查询系统 极兔快递官网运单号追踪  我的世界mc.js免费游戏直接能玩 我的世界mc.js小游戏免费秒玩入口  Go与Ruby之间实现AES加密互通:CFB模式下的密钥长度匹配策略  QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用  composer 和 npm/yarn 在管理依赖方面有什么核心思想差异?  如何优雅地扩展SprykerGlue后端API授权逻辑,使用spryker/glue-backend-api-application-authorization-connector-extension  C++20的source_location是什么_C++在编译期获取源码位置信息用于日志和断言  天眼查怎么看公司融资情况 天眼查企业融资历史查询步骤【攻略】  天猫双十一预售商品怎么退款_天猫双十一预售退款操作指南  12306选座怎么选到特殊座位_12306特殊座位选择注意事项  厨房不锈钢水槽发黑生锈怎么处理_水槽用可乐+锡纸2分钟抛亮如新  mysql如何分析事务日志_mysql事务日志分析方法  离线运行Go语言之旅:本地部署与GOPATH配置指南  12306几点到几点不能订票? | 官方最新系统维护时间全解析  如何使用CaptainHook和Composer管理Git钩子_在提交前自动运行代码检查的Composer配置  TikTok搜索结果不显示如何解决 TikTok搜索刷新优化方法  虚幻5科幻题材ARPG大作遭取消!本是《奇异人生》厂商新作  抖音网页版怎么|直播|_抖音网页版开播操作指南  拷贝漫画电脑版官网入口 拷贝漫画(PC版)在线直达  J*aScript打印功能_j*ascript输出控制  将HTML Canvas内容转换为可上传的图像文件(File对象)  魅族17怎样用浏览器译外语网页_iPhone魅族17浏览器译外语网页【即时翻译】  俄罗斯Yandex搜索引擎入口_Yandex官网免登录一键访问  WooCommerce产品页高级定制:实现基于分类的交叉销售  Windows 11怎么彻底关闭定位_Windows 11服务中禁用Geolocation  CSS Box Model与弹性按钮:维持布局稳定的动画实践  俄罗斯搜索引擎Yandex指南 附2025年免登录官网入口  Animex动漫社网入口地址 Animex动漫社网正版在线入口  处理Kafka消息时会话超时与实现幂等性消费者  深入理解J*aScript中的B样条曲线与节点向量生成  Win11怎么关闭触摸屏_Windows 11禁用HID符合标准触摸屏  在J*a中如何开发在线活动报名与管理系统_活动报名管理项目实战解析  动漫花园资源网使用步骤_动漫花园资源网下载流程  J*a如何使用AtomicInteger控制计数_J*a无锁计数器性能分析  Win11截图该按哪些键 Win11截屏完整流程解析【教程】  c++中的const_cast和reinterpret_cast怎么用_c++四种类型转换  PHP:根据嵌套关联数组项值动态添加新键值对  WooCommerce 购物车显示所有交叉销售商品教程  Gmail邮箱申请注册直达_Gmail邮箱免费注册PC版官网入口2025  Golang如何使用new_Go new分配内存机制讲解  今日头条怎么同步内容到抖音_今日头条内容同步到抖音教程  Yii2模块参数配置指南:正确声明与访问模块级配置  J*aScript 字符串标签转换:使用正则表达式高效替换 

在线客服
服务热线

服务热线

4008988990

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!