在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
相关产品推荐
相关产品推荐

