DataTable解析成JSON方法说明

本文介绍了一种将DataTable转换为JSON格式的方法,通过遍历数据表的字段和行来构造JSON字符串,适用于.NET平台的数据交互场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一下是解析DataTable成JSON数据格式的函数方法:

 

ContractedBlock.gifExpandedBlockStart.gifCode
/// <summary>
        
/// 将数据表转换成JSON类型串
        
/// </summary>
        
/// <param name="dt">要转换的数据表</param>
        
/// <param name="dispose">数据表转换结束后是否dispose掉</param>
        
/// <returns></returns>
        public static StringBuilder DataTableToJSON(System.Data.DataTable dt, bool dt_dispose)
        {
            StringBuilder stringBuilder 
= new StringBuilder();
            stringBuilder.Append(
"[");

            
//数据表字段名和类型数组
            string[] dt_field = new string[dt.Columns.Count];
            
int i = 0;
            
string formatStr = "{{";
            
string fieldtype = "";
            
foreach (System.Data.DataColumn dc in dt.Columns)
            {
                dt_field[i] 
= dc.Caption.ToLower().Trim();
                formatStr 
+= '"' + dc.Caption.ToLower().Trim() + '"' + ":";
                fieldtype 
= dc.DataType.ToString().Trim().ToLower();
                
if (fieldtype.IndexOf("int"> 0 || fieldtype.IndexOf("deci"> 0 ||
                    fieldtype.IndexOf(
"floa"> 0 || fieldtype.IndexOf("doub"> 0 ||
                    fieldtype.IndexOf(
"bool"> 0)
                {
                    formatStr 
+= "{" + i + "}";
                }
                
else
                {
                    formatStr 
+= '"' + "{" + i + "}" + '"';
                }
                formatStr 
+= ",";
                i
++;
            }

            
if (formatStr.EndsWith(","))
            {
                formatStr 
= formatStr.Substring(0, formatStr.Length - 1);//去掉尾部","号
            }
            formatStr 
+= "}},";

            i 
= 0;
            
object[] objectArray = new object[dt_field.Length];
            
foreach (System.Data.DataRow dr in dt.Rows)
            {

                
foreach (string fieldname in dt_field)
                {   
//对 \ , ' 符号进行转换 
                    objectArray[i] = dr[dt_field[i]].ToString().Trim().Replace("\\""\\\\").Replace("'""\\'").Replace("\n","");
                    
switch (objectArray[i].ToString())
                    {
                        
case "True":
                            {
                                objectArray[i] 
= "true"break;
                            }
                        
case "False":
                            {
                                objectArray[i] 
= "false"break;
                            }
                        
defaultbreak;
                    }
                    i
++;
                }
                i 
= 0;
                stringBuilder.Append(
string.Format(formatStr, objectArray));
            }
            
if (stringBuilder.ToString().EndsWith(","))
            {
                stringBuilder.Remove(stringBuilder.Length 
- 11);//去掉尾部","号
            }

            
if (dt_dispose)
            {
                dt.Dispose();
            }
            
return stringBuilder.Append("]");
        }

 

记录一下,共同学习

转载于:https://www.cnblogs.com/hqbird/archive/2009/10/14/1583287.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值