C# DataTable转换为JSON的通用实现
该资源提供了一种将DataTable转换为JSON格式的通用方法,适用于需要将数据库查询结果或数据处理后的结果转化为JSON字符串的场景。代码由作者亲自编写并测试通过,可供下载使用。 在.NET环境中,`DataTable`是常用的数据存储结构,而JSON则是一种轻量级的数据交换格式,广泛应用于前后端数据交互。这个代码片段提供了两个函数,用于将`DataTable`对象转换成符合JSON规范的字符串。 1. `DataTableToJSON`函数:此函数接受一个`DataTable`对象作为参数,然后调用`DataTableToList`函数将其转换为List对象,再进一步转换为JSON字符串。这种方法的好处是,即使`DataTable`结构复杂,也能通过List的层次结构来正确表示。 2. `DataTableToJson`函数:这个函数比`DataTableToJSON`多了一个参数`jsonName`,它用于创建嵌套的JSON对象。返回的JSON字符串以`jsonName`为键,其值是一个包含所有`DataTable`行的数组。对于每一行,代码会遍历所有列,将列名转换为小写并作为JSON键,列值经过编码后作为对应的JSON值。这里使用了`System.Web.HttpUtility.UrlPathEncode`进行URL路径编码,可以确保特殊字符在JSON字符串中的正确表示。 在循环中,当遍历到列的最后一个元素时,不会添加逗号,而在遍历行的最后一个元素时,也不会添加逗号,从而保证了JSON的语法正确性。此外,`StringBuilder`类被用来构建JSON字符串,这样可以提高性能,避免了大量的字符串连接操作。 总结来说,这两个函数为.NET开发者提供了一种方便、高效的方法,将数据库操作的结果以JSON格式传输到前端或者其他需要JSON数据的地方,特别是在Web开发中,这种转换是非常常见的需求。注意在实际使用中,需要根据项目需求选择合适的编码方式,如URL编码可能不适用于所有情况,有时可能需要使用JSON.NET库的更高级的序列化选项来处理日期、自定义类型等复杂数据。
/// 数据表转JSON
/// </summary>
/// <param name="dataTable">数据表</param>
/// <returns>JSON字符串</returns>
public static string DataTableToJSON(DataTable dt)
{
return ObjectToJSON(DataTableToList(dt));
}
public static string DataTableToJson(string jsonName, DataTable dt)
{
StringBuilder Json = new StringBuilder();
Json.Append("{\"" + jsonName + "\":[");
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
Json.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
//Json.Append("\"" + dt.Columns[j].ColumnName.ToLower().ToString() + "\":\"" + System.Web.HttpUtility.UrlEncode(dt.Rows[i][j].ToString()) + "\"");
Json.Append("\"" + dt.Columns[j].ColumnName.ToLower().ToString() + "\":\"" + System.Web.HttpUtility.UrlPathEncode(dt.Rows[i][j].ToString()) + "\"");
if (j < dt.Columns.Count - 1)
{
Json.Append(",");
}
}
Json.Append("}");
if (i < dt.Rows.Count - 1)
{
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 1131
- 资源: 245
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展