C# | 使用DataGridView展示JSON数组

本文介绍了如何在C#中利用DataGridView展示JSON数组数据。首先,通过Newtonsoft.Json库的JsonConvert.DeserializeObject方法将JSON反序列化为List<Dictionary<string,object>>,然后遍历数据创建列和行,最后填充到DataGridView中,以表格形式展示数据。
摘要由CSDN通过智能技术生成

在这里插入图片描述

C# | 使用DataGridView展示JSON数组

前言

你想展示一个复杂的JSON数组数据吗?但是你却不知道该如何展示它,是吗?没问题,因为本文就是为解决这个问题而生的!使用DataGridView轻松地将JSON数组数据以表格的形式呈现出来,这样你就可以更加清晰地了解和处理数据了。

让我们一起来探索如何实现吧!


实现原理

  1. 定义一个 JSON 格式的字符串。
  2. 使用 Newtonsoft.Json 库的 JsonConvert.DeserializeObject 方法将 JSON 反序列化为 List<Dictionary<string, object>> 对象列表。
  3. 遍历对象列表,将每个对象的属性作为 DataGridView 中的一列,并将对象的属性值作为 DataGridView 中的一行。
  4. 将 DataGridView 显示在 UI 界面上。

实现过程

第一步,清空 DataGridView 中的所有列和行。

dataGridView1.Columns.Clear();
dataGridView1.Rows.Clear();

第二步,使用 Newtonsoft.Json 库的 JsonConvert.DeserializeObject 方法将 JSON 反序列化为 List<Dictionary<string, object>> 对象列表。

string json = "[{ \"Name\": \"Alice\", \"Age\": 23 }, { \"Name\": \"Bob\", \"Age\": 25 }, { \"Name\": \"Charlie\", \"Age\": 27 }]";
List<Dictionary<string, object>> data = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(json);

第三步,遍历对象列表,将每个对象的属性作为 DataGridView 中的一列。

foreach (var row in data)
{
    foreach (var column in row)
    {
        // 如果列不存在,添加列
        if (!dataGridView1.Columns.Contains(column.Key))
        {
            dataGridView1.Columns.Add(column.Key, column.Key);
        }
    }
}

第四步,遍历对象列表,将对象的属性值作为 DataGridView 中的一行。

foreach (var row in data)
{
    int rowIndex = dataGridView1.Rows.Add();
    foreach (var column in row)
    {
        dataGridView1.Rows[rowIndex].Cells[column.Key].Value = column.Value;
    }
}

完整源码

using Newtonsoft.Json;

// 清空 DataGridView 中的所有列和行
dataGridView1.Columns.Clear();
dataGridView1.Rows.Clear();

// JSON 格式的字符串
string json = "[{ \"Name\": \"Alice\", \"Age\": 23 }, { \"Name\": \"Bob\", \"Age\": 25 }, { \"Name\": \"Charlie\", \"Age\": 27 }]";

// 将 JSON 反序列化为对象列表
List<Dictionary<string, object>> data = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(json);

// 遍历对象列表,将每个对象的属性作为 DataGridView 中的一列
foreach (var row in data)
{
    foreach (var column in row)
    {
        // 如果列不存在,添加列
        if (!dataGridView1.Columns.Contains(column.Key))
        {
            dataGridView1.Columns.Add(column.Key, column.Key);
        }
    }
}

// 遍历对象列表,将对象的属性值作为 DataGridView 中的一行
foreach (var row in data)
{
    int rowIndex = dataGridView1.Rows.Add();
    foreach (var column in row)
    {
        dataGridView1.Rows[rowIndex].Cells[column.Key].Value = column.Value;
    }
}

每次运行代码时,DataGridView 都会动态生成列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿长大人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值