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

如何格式化JSON值并在DataGridView中显示?附ASP.NET Web API返回示例

如何将ASP.NET Web API返回的JSON格式化并在DataGridView中显示

嘿,我来帮你一步步搞定这个问题!核心思路其实很简单:把JSON数据转换成C#可识别的对象集合,再绑定到DataGridView,下面是具体的实现步骤:

1. 先定义匹配JSON结构的实体类

首先得创建一个和JSON字段一一对应的C#类,这样才能顺利把JSON反序列化过来。根据你给出的JSON内容,这个类可以这么写:

public class ProjectContribution
{
    public string Company { get; set; }
    public string ProjectName { get; set; }
    public string Developer { get; set; }
    public int Hour { get; set; }
    public int Overtime { get; set; }
    public string Contribution { get; set; }
}

2. 从Web API获取JSON并反序列化

接下来要调用你的Web API拿到完整的JSON字符串,再把它转换成List<ProjectContribution>集合。这里推荐用Newtonsoft.Json(也就是Json.NET,直接通过NuGet就能安装),或者.NET Core/.NET 5+自带的System.Text.Json。

示例代码(HttpClient+Json.NET版本):

using Newtonsoft.Json;
using System.Net.Http;
using System.Collections.Generic;

// 替换成你的Web API实际地址
string apiUrl = "https://your-api-address/api/contribution-data";

using (HttpClient client = new HttpClient())
{
    // 获取API返回的JSON字符串
    string jsonResponse = await client.GetStringAsync(apiUrl);
    
    // 把JSON反序列化成对象集合
    List<ProjectContribution> contributionList = JsonConvert.DeserializeObject<List<ProjectContribution>>(jsonResponse);
    
    // 调用绑定方法把数据给到DataGridView
    BindDataToGridView(contributionList);
}

如果用System.Text.Json,反序列化部分换成这段即可:

using System.Text.Json;

List<ProjectContribution> contributionList = JsonSerializer.Deserialize<List<ProjectContribution>>(jsonResponse);

3. 将对象集合绑定到DataGridView

这一步就很简单了,直接把集合赋值给DataGridView的DataSource就行(以WinForms为例):

private void BindDataToGridView(List<ProjectContribution> data)
{
    // 先清空之前的绑定数据
    dataGridView1.DataSource = null;
    
    // 绑定新的数据源
    dataGridView1.DataSource = data;
    
    // 可选:让列宽自动适配内容
    dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
}

额外小技巧:自定义列显示

如果你不想用自动生成的列,也可以手动配置列的标题、宽度和格式:

// 先关闭自动生成列的功能
dataGridView1.AutoGenerateColumns = false;

// 添加自定义列
dataGridView1.Columns.Add(new DataGridViewTextBoxColumn
{
    DataPropertyName = "Company", // 对应实体类的属性名
    HeaderText = "公司名称",       // 显示的列标题
    Width = 120
});
dataGridView1.Columns.Add(new DataGridViewTextBoxColumn
{
    DataPropertyName = "ProjectName",
    HeaderText = "项目名称",
    Width = 150
});
// 其他字段以此类推...

// 最后绑定数据源
dataGridView1.DataSource = contributionList;

注意事项

  • 确保你的JSON数据是完整且格式正确的(你提供的示例最后是ProjectNam...,得先修复这个截断问题,否则反序列化会报错)。
  • 如果是ASP.NET Web Forms里的DataGridView,思路是一致的,只是绑定可以用ObjectDataSource或者后台直接赋值。

内容的提问来源于stack exchange,提问作者Sachith Wickramaarachchi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:10:59