C# | 使用DataGridView展示JSON数组

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

image.png

C# | 使用DataGridView展示JSON数组

@[toc]

前言

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

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


实现原理

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

实现过程

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

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

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

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

相关文章
|
7月前
|
C#
C#学习相关系列之数组---常用方法使用(二)
C#学习相关系列之数组---常用方法使用(二)
|
7月前
|
存储 C#
C#学习系列相关之数组(一)---数组的定义与使用
C#学习系列相关之数组(一)---数组的定义与使用
|
3月前
|
存储 C# 索引
C# 一分钟浅谈:数组与集合类的基本操作
【9月更文挑战第1天】本文详细介绍了C#中数组和集合类的基本操作,包括创建、访问、遍历及常见问题的解决方法。数组适用于固定长度的数据存储,而集合类如`List<T>`则提供了动态扩展的能力。文章通过示例代码展示了如何处理索引越界、数组长度不可变及集合容量不足等问题,并提供了解决方案。掌握这些基础知识可使程序更加高效和清晰。
88 2
|
3月前
|
XML JSON 数据处理
C# 中的 XML 与 JSON 数据处理
在现代软件开发中,数据交换和存储需求日益增长,XML 和 JSON 成为最常用的数据格式。本文从 C# 角度出发,详细介绍如何处理这两种格式,并提供示例代码。对于 XML,我们介绍了读取、创建和写入 XML 文件的方法;对于 JSON,则展示了如何使用 Newtonsoft.Json 库进行数据解析和序列化。此外,文章还总结了常见问题及其解决方案,帮助开发者更好地应对实际项目中的挑战。
197 61
C# 中的 XML 与 JSON 数据处理
|
2月前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
566 0
|
4月前
|
JSON 前端开发 JavaScript
php中JSON或数组到formData的键值对转换
转换JSON或数组到formData格式的键值对并不复杂。PHP的 `json_decode()`与 `http_build_query()`是实现这一转换过程的关键函数。理解这个转换过程对于开发中处理各种AJAX请求时调整数据格式至关重要。这样,无论是处理来自客户端的JSON字符串,还是服务器端的数组数据,都能够灵活地转换为适合网络传输的格式,确保数据交换的顺畅和高效。
106 4
|
4月前
|
SQL JSON 关系型数据库
"SQL老司机大揭秘:如何在数据库中玩转数组、映射与JSON,解锁数据处理的无限可能,一场数据与技术的激情碰撞!"
【8月更文挑战第21天】SQL作为数据库语言,其能力不断进化,尤其是在处理复杂数据类型如数组、映射及JSON方面。例如,PostgreSQL自8.2版起支持数组类型,并提供`unnest()`和`array_agg()`等函数用于数组的操作。对于映射类型,虽然SQL标准未直接支持,但通过JSON数据类型间接实现了键值对的存储与查询。如在PostgreSQL中创建含JSONB类型的表,并使用`-&gt;&gt;`提取特定字段或`@&gt;`进行复杂条件筛选。掌握这些技巧对于高效管理现代数据至关重要,并预示着SQL在未来数据处理领域将持续扮演核心角色。
67 0
|
4月前
|
开发框架 前端开发 .NET
C# Newtonsoft.Json.Formatting DateTime 日期格式化
C# Newtonsoft.Json.Formatting DateTime 日期格式化
74 0
|
4月前
|
JSON JavaScript 数据格式
Jquery 将 JSON 列表的 某个属性值,添加到数组中,并判断一个值,在不在数据中
Jquery 将 JSON 列表的 某个属性值,添加到数组中,并判断一个值,在不在数据中
85 0
|
6月前
|
JSON 关系型数据库 MySQL
MySQL中GROUP_CONCAT与JSON_OBJECT、GROUP BY的巧妙结合:打造高效JSON数组汇总
MySQL中GROUP_CONCAT与JSON_OBJECT、GROUP BY的巧妙结合:打造高效JSON数组汇总
191 1