C#使用Newtonsoft.Json Nuget解析Json响应获取CustomerList数据
C# 基于Newtonsoft.Json读取指定JSON节点并绑定GridView实现方案
前置准备
- 右键项目依赖项,选择「管理NuGet程序包」,搜索并安装
Newtonsoft.Json包,完成解析依赖引入。
第一步:定义JSON映射实体类
根据给出的固定JSON结构,定义对应层级的强类型实体,避免解析时出现字段匹配错误:
/// <summary> /// 客户信息实体,对应CustomerList数组内的单条数据结构 /// </summary> public class Customer { public string EntityName { get; set; } public string EntityID { get; set; } public string ContactNum { get; set; } } /// <summary> /// payload节点对应实体结构 /// </summary> public class ResponsePayload { public string SentItemCount { get; set; } public string MatchingItemCount { get; set; } public List<Customer> CustomerList { get; set; } } /// <summary> /// JSON响应根节点实体结构 /// </summary> public class ApiRootResponse { public string Status { get; set; } public string StatusCode { get; set; } public ResponsePayload payload { get; set; } }
第二步:解析JSON提取目标CustomerList数据
优先使用强类型反序列化方案,可维护性更高、出错率更低:
using Newtonsoft.Json; // 此处替换为你实际拿到的JSON响应字符串 string rawJsonText = "接口返回的完整JSON内容"; // 反序列化为根实体对象 ApiRootResponse resp = JsonConvert.DeserializeObject<ApiRootResponse>(rawJsonText); // 提取目标客户列表,增加空值判断避免空引用异常 List<Customer> customerDatas = resp?.payload?.CustomerList ?? new List<Customer>();
如果不想定义多层实体,也可以用JObject做轻量动态解析:
using Newtonsoft.Json.Linq; JObject jsonObj = JObject.Parse(rawJsonText); List<Customer> customerDatas = jsonObj["payload"]?["CustomerList"]? .ToObject<List<Customer>>() ?? new List<Customer>();
第三步:绑定数据到GridView控件
根据你使用的项目类型,选择对应的绑定写法即可:
- WinForm项目下的DataGridView绑定:
// 清空历史绑定避免数据残留 dataGridView1.DataSource = null; // 绑定解析完成的客户列表 dataGridView1.DataSource = customerDatas;
- ASP.NET WebForm项目下的GridView绑定:
gridView1.DataSource = customerDatas; gridView1.DataBind();
注意:如果后续JSON字段名和C#实体属性名存在命名、大小写不一致的情况,只需要在对应C#属性上添加
[JsonProperty("JSON中实际的字段名")]特性做映射即可,当前示例的JSON字段和实体属性完全匹配,无需额外配置。
内容的提问来源于stack exchange,提问作者Buddy26
相关产品推荐
相关产品推荐

