当前位置: 首页 > article >正文

C# | 使用DataGridView展示JSON数组

C# | 使用DataGridView展示JSON数组

文章目录

  • 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 都会动态生成列。


http://www.kler.cn/a/6099.html

相关文章:

  • 【深度学习】深度(Deep Learning)学习基础
  • STM32+WIFI获取网络时间+8位数码管显示+0.96OLED显
  • 计算机网络——网络层—IP数据报与分片
  • 大数据技术 指令笔记1
  • 如何配置Cursor的显示主题模式
  • thinkphp6.0常用设计模式实例
  • 近万字的超详细C++类和对象(已完结)
  • 【网络应用开发】实验2--JSP技术及应用(HTTP状态400错误的请求的解决方法)
  • PMP一般要提前多久备考?
  • iptables实例
  • 为什么我们都需要学点数据可视化?
  • vue+echarts.js 实现中国地图——根据数值表示省份的深浅——技能提升
  • 【Linux】线程互斥
  • Linux进程
  • 【动手学强化学习】安装gym subprocess-exited-with-error
  • 基于html+css的evenly布局
  • ChatGP使用案例之写文章
  • 【数据结构】第三章 栈 队列和数组
  • 华为OD机试用java实现 -【高效的任务规划】
  • LinuxFTP文件传输服务和DNS域名解析服务
  • SpringAOP入门及纯注解开发
  • ros中动态参数dynamic_reconfigure客户端
  • 一套完整的动环监控系统,适用于各类机房、学校机房、医院机房、银行库房等
  • 汽车开放系统架构
  • 隐藏个人信息
  • 为什么数字化转型,必须是“一把手”工程?