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

来源:这里教程网 时间:2026-02-21 17:31:27 作者:

在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 flexRow">
                                                        <div class="artcardd flexRow">
                                                                <a class="aritcle_card_img" href="/xiazai/shouce/1926" title="JSON.NET 简单的使用 中文WORD版"><img
                                                                                src="https://www.herecours.com/d/file/efpub/2026/21-21/20260221135757179300.jpg" alt="JSON.NET 简单的使用 中文WORD版"  onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
                                                                <div class="aritcle_card_info flexColumn">
                                                                        <a href="/xiazai/shouce/1926" title="JSON.NET 简单的使用 中文WORD版">JSON.NET 简单的使用 中文WORD版</a>
                                                                        <p>本文档主要讲述的是JSON.NET 简单的使用;JSON.NET使用来将.NET中的对象转换为JSON字符串(序列化),或者将JSON字符串转换为.NET中已有类型的对象(反序列化?)。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看</p>
                                                                </div>
                                                                <a href="/xiazai/shouce/1926" title="JSON.NET 简单的使用 中文WORD版" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
                                                        </div>
                                                </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 到对象的转换。

相关推荐

热文推荐