在C#中从SQL表结果格式化指定结构JSON的技术问题
如何在C#中按指定列维度格式化SQL查询结果为JSON结构?
没问题,我来帮你完善这段代码,实现把SQL表的每一列单独转成数组的需求。下面是完整的实现方案,包含代码细节和关键说明:
完整实现代码
using System.Data; using System.Data.SqlClient; using System.Collections.Generic; // 如果用Newtonsoft.Json,需要添加这个引用(记得先装NuGet包) // using Newtonsoft.Json; // 如果用.NET Core/.NET 5+内置的System.Text.Json,用这个 // using System.Text.Json; public string Test() { DataTable dt = new DataTable(); using (SqlConnection con = new SqlConnection(conect)) { using (SqlCommand cmd = new SqlCommand("Select Name, col2, col3 from BASE.[dbo].[Orders_Date_to_Chart]() order by y desc", con)) { con.Open(); // 用SqlDataAdapter把查询结果填充到DataTable using (SqlDataAdapter da = new SqlDataAdapter(cmd)) { da.Fill(dt); } } } // 构建按列分组的数组列表 List<List<string>> columnArrays = new List<List<string>>(); // 遍历DataTable的每一列 foreach (DataColumn column in dt.Columns) { List<string> columnValues = new List<string>(); foreach (DataRow row in dt.Rows) { // 处理DBNull的情况,避免ToString()报错 string cellValue = row.IsNull(column) ? string.Empty : row[column].ToString(); columnValues.Add(cellValue); } columnArrays.Add(columnValues); } // 序列化结果为JSON // 方式1:使用Newtonsoft.Json(传统.NET框架常用) // return JsonConvert.SerializeObject(columnArrays); // 方式2:使用.NET Core/.NET 5+内置的System.Text.Json return JsonSerializer.Serialize(columnArrays); }
关键细节说明
- 精准查询列:我把SQL语句改成了
Select Name, col2, col3,避免查询多余列影响最终的JSON结构。 - 处理空值:加入了
row.IsNull(column)判断,防止数据库中DBNull值导致ToString()抛出异常。 - 序列化选项:提供了两种序列化方式:
- 如果是.NET Framework项目,推荐用Newtonsoft.Json(需要先通过NuGet包管理器安装);
- 如果是.NET Core/.NET 5+项目,直接用内置的System.Text.Json即可,无需额外安装包。
最终输出效果
执行后会返回一个包含三个数组的JSON结构(完全匹配你需求的格式):
[["Name1","Name2","Name3"],["1","4","7"],["2","5","8"]]
如果需要单独输出每个数组的字符串,可以遍历columnArrays分别序列化后拼接,比如:
var individualArrays = columnArrays.Select(arr => JsonSerializer.Serialize(arr)); // 得到三个独立的数组字符串:"[\"Name1\",\"Name2\",\"Name3\"]"、"[\"1\",\"4\",\"7\"]"、"[\"2\",\"5\",\"8\"]"
注意事项
- 确保
conect变量是正确的数据库连接字符串; - 如果使用Newtonsoft.Json,记得在项目中安装对应的NuGet包;
- 如果列是数值类型,
ToString()会自动转为字符串形式,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Marcin Wolanski
相关产品推荐
相关产品推荐

