新闻中心

C#如何反序列化JSON C#将JSON字符串转换为对象的方法

2025-11-23
浏览次数:
返回列表
答案是使用 System.Text.Json 或 Newtonsoft.Json 将 JSON 字符串反序列化为 C# 对象。首先定义属性匹配的类,然后调用 JsonSerializer.Deserialize 或 JsonConvert.DeserializeObject 方法解析字符串,支持嵌套结构与自定义字段映射,推荐 .NET 6+ 项目优先使用 System.Text.Json 以获得更好性能。

c#如何反序列化json c#将json字符串转换为对象的方法

在C#中,将JSON字符串转换为对象的过程称为反序列化。最常用的方式是使用 System.Text.Json(.NET Core 3.0+ 默认推荐)或第三方库如 Newtonsoft.Json(又称 Json.NET)。以下是两种主流方法的详细说明。

使用 System.Text.Json 反序列化 JSON

System.Text.Json 是 .NET 内置的高性能 JSON 操作库,适用于大多数现代 C# 项目。

示例代码:

using System;
using System.Text.Json;
<p>// 定义目标类
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}</p><p>// JSON 字符串
string jsonString = @"{""Name"": ""张三"", ""Age"": 30}";</p><p>// 反序列化
Person person = JsonSerializer.Deserialize<Person>(jsonString);</p><p>Console.WriteLine(person.Name); // 输出:张三
Console.WriteLine(person.Age);  // 输出:30

注意:
  • 属性名默认需与 JSON 字段匹配(大小写敏感)。
  • 可使用 [JsonPropertyName] 特性自定义映射。

使用 Newtonsoft.Json 反序列化 JSON

Newtonsoft.Json 功能更灵活,支持老版本 .NET Framework,广泛用于现有项目。

安装 NuGet 包:

Install-Package Newtonsoft.Json

示例代码:

using Newtonsoft.Json;
<p>string jsonString = @"{""Name"": ""李四"", ""Age"": 25}";</p>
                    <div class="aritcle_card">
                        <a class="aritcle_card_img" href="/xiazai/shouce/1926">
                            <img src="https://img.php.cn/upload/manual/000/000/007/170911471569350.png" alt="JSON.NET 简单的使用 中文WORD版">
                        </a>
                        <div class="aritcle_card_info">
                            <a href="/xiazai/shouce/1926">JSON.NET 简单的使用 中文WORD版</a>
                            <p>本文档主要讲述的是JSON.NET 简单的使用;JSON.NET使用来将.NET中的对象转换为JSON字符串(序列化),或者将JSON字符串转换为.NET中已有类型的对象(反序列化?)。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看</p>
                            <div class="">
                                <img src="/static/images/card_xiazai.png" alt="JSON.NET 简单的使用 中文WORD版">
                                <span>0</span>
                            </div>
                        </div>
                        <a href="/xiazai/shouce/1926" class="aritcle_card_btn">
                            <span>查看详情</span>
                            <img src="/static/images/cardxiayige-3.png" alt="JSON.NET 简单的使用 中文WORD版">
                        </a>
                    </div>
                <p>Person person = JsonConvert.DeserializeObject<Person>(jsonString);</p><p>Console.WriteLine(person.Name); // 输出:李四

特性支持:
  • 使用 [JsonProperty("xxx")] 指定字段名。
  • 支持复杂类型、日期格式、空值处理等高级配置。

处理嵌套对象和数组

无论是 System.Text.Json 还是 Newtonsoft.Json,都可以自动处理嵌套结构。

public class Address
{
    public string City { get; set; }
    public string Street { get; set; }
}
<p>public class Person
{
public string Name { get; set; }
public Address HomeAddress { get; set; }
}</p><p>string json = @"{
""Name"": ""王五"",
""HomeAddress"": {
""City"": ""北京"",
""Street"": ""朝阳路123号""
}
}";</p><p>Person p = JsonSerializer.Deserialize<Person>(json);
Console.WriteLine(p.HomeAddress.City); // 输出:北京

常见问题与建议

  • 确保类的属性是 public 且有 getter/setter。
  • JSON 中字段不存在时,对应属性为默认值(如 null、0),不会报错。
  • 遇到反序列化失败,检查字段名拼写、数据类型是否匹配。
  • .NET 6+ 推荐优先使用 System.Text.Json,性能更好。

基本上就这些。根据项目环境选择合适的库即可完成 JSON 到对象的转换。

以上就是C#如何反序列化JSON C#将JSON字符串转换为对象的方法的详细内容,更多请关注其它相关文章!


# 的是  # 厦门有能做网站优化  # 铁西seo优化排名  # 新民专业seo优化  # 苏州网站建设公司推广  # 浙江网络营销网站推广  # 福州网站优化推广多少钱  # 关键词排名seo13云牜速牜捷  # 网站访问优化方案有哪些  # 推广头像的素材网站  # 贵州网站建设优化案例分析  # 字段名  # 李四  # js  # 操作指南  # 如何将  # 北京  # 如何使用  # 自定义  # 转换为  # 序列化  # .net  # c#  # 常见问题  # json 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 期待已久:小米17 Ultra、小米首款NAS本月登场  妖精动漫免费平台 妖精动漫官网资源观看网址  EMS快递官网app_中国邮政速递物流手机客户端  sublime如何处理大型CSV文件的列对齐_sublime高级表格编辑插件指南  LINUX的I/O重定向是什么_深入理解LINUX中 >、>> 与 < 的区别  Win11怎么设置鼠标指针速度_Win11提高鼠标指针精确度选项  邮政编码查询不到怎么办_邮政编码查询不到的常见原因与对策  解决Bootstrap卡片顶部边距导致背景图下移的问题  sublime如何配置Python开发环境_将sublime打造成轻量级Python IDE  AO3中文官网链接_AO3网页版稳定镜像站  微信网页版官方入口直达 微信网页版网页版登录使用方法  双系统安装时,如何设置默认启动系统? msconfig命令了解一下!  Golang如何实现简单的Web表单_Golang表单提交与验证处理方法  如何将HTML表格多行数据保存到Google Sheet  Win10自动更新怎么关闭 Win10永久关闭系统更新的两种方法【终极版】  UC浏览器网页版登录入口官网 电脑版网址入口  为什么简单的XML文件也会解析失败? 检查隐藏的非打印字符(如BOM)的方法  Surface怎么安装系统 微软Surface Pro U盘重装win11教程  vivo浏览器自带的下载器速度慢怎么办 vivo浏览器提升文件下载速度的技巧  机器学习中对数变换预测结果的反向还原  TikTok网页版直接登录 TikTok网页端官方平台入口  天猫2025双十一0点秒杀攻略 天猫爆款抢购时间  J*aScript中向JSON对象添加新属性的正确姿势  Lar*el的路由模型绑定怎么用_Lar*el Route Model Binding简化控制器逻辑  Win11怎么修改默认浏览器_Windows 11设置Chrome为默认  解决Tabulator日期时间排序问题的专业指南  构建轻量级网站内部消息系统:Formspree 集成指南  包子漫画官方网站阅读入口-包子漫画在线漫画官网直达链接  外媒分析《GTA6》定价:卖100美元可以但真没必要!  邮政快递包裹最新位置 邮政快递实时追踪入口  神庙逃亡小游戏在线玩 神庙逃亡小游戏入口  C++如何实现一个装饰器模式_C++设计模式之动态地给对象添加额外职责  Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】  谷歌浏览器如何快速清除某个网站的数据_Chrome网站缓存清理方法  Excel文件在线转换快速入口 Excel在线格式转换网站  css链接悬停下划线样式如何自定义_使用::after结合content和transition  拷贝漫画电脑版官网入口 拷贝漫画(PC版)在线直达  海量存储:机器视觉智能化的核心基石  Sublime怎么配置Nim语言环境_Sublime Nim代码高亮与补全  c++中的const_cast和reinterpret_cast怎么用_c++四种类型转换  CSS自定义字体样式被系统字体替换怎么办_font-face方式指定font-display控制渲染策略  智慧团建扫码登录入口 智慧团建扫码登录入口官网版​  优酷会员付费后没到账怎么办_优酷会员充值异常及解决方法  Win11网速慢怎么解决 Win11网络设置优化解除限速  J*a递归快速排序中静态变量导致数据累积问题的解决方案  Win11输入法不见了怎么办_Windows11恢复语言栏显示方法  电脑安装程序提示“错误1722”怎么办_Windows Installer服务问题解决【教程】  React Router v6 教程:构建认证保护的私有路由与重定向策略  在Typer应用中优雅地处理和重组任意命令行参数  PDF怎么合并PDF并保持格式_PDF合并文件保持排版教程 

搜索