You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C#中如何反序列化数组格式JSON并创建对应模型读取数据

C# 反序列化指定JSON格式的实现方法

1. 创建匹配的实体模型

你提供的JSON是对象数组结构,每个元素包含3个字符串类型的键值对,对应创建如下实体类即可:

public class ProvinceItem
{
    public string ID { get; set; }
    public string Province { get; set; }
    public string Capital { get; set; }
}

如果需要自定义属性名和JSON键的映射(比如C#属性用其他命名规则,要匹配JSON的大写键),可以用特性标记:

  • 用System.Text.Json库的话,加[JsonPropertyName("ID")]标记
  • 用Newtonsoft.Json库的话,加[JsonProperty("ID")]标记

2. 反序列化操作

C#常用的JSON处理库有两种,分别对应不同版本的.NET框架:

使用内置System.Text.Json(.NET Core 3.0+ / .NET 5+ 自带,无需额外安装)

首先引入命名空间:

using System.Text.Json;

反序列化代码:

// 这里替换为你的实际JSON字符串
string jsonContent = @"[
     {
         ""ID"":""HR"",
         ""Province"":""Haryana"",
         ""Capital"":""Chandigarh""
     },
     {
         ""ID"":""BR"",
         ""Province"":""Bihar"",
         ""Capital"":""Patna""
     }
]";

// 因为是数组结构,所以反序列化为List<ProvinceItem>或者ProvinceItem[]都可以
List<ProvinceItem> provinceList = JsonSerializer.Deserialize<List<ProvinceItem>>(jsonContent);

// 如果要忽略属性大小写匹配,可以加配置参数
// var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true };
// List<ProvinceItem> provinceList = JsonSerializer.Deserialize<List<ProvinceItem>>(jsonContent, options);

使用Newtonsoft.Json(Json.NET,适用于.NET Framework等老版本框架)

首先通过Nuget安装Newtonsoft.Json包,然后引入命名空间:

using Newtonsoft.Json;

反序列化代码:

List<ProvinceItem> provinceList = JsonConvert.DeserializeObject<List<ProvinceItem>>(jsonContent);

3. 读取反序列化后的数据

直接操作得到的集合即可,示例:

foreach (var item in provinceList)
{
    Console.WriteLine($"省份编码:{item.ID},省份名称:{item.Province},省会:{item.Capital}");
}

// 也可以按条件查询单个元素
var brItem = provinceList.FirstOrDefault(x => x.ID == "BR");
if (brItem != null)
{
    Console.WriteLine(brItem.Capital); // 输出Patna
}

内容的提问来源于stack exchange,提问作者Suveen Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:54:01