asp.net使用DataTable构造Json字符串的方法
ASP.NET中DataTable构造Json字符串的奥秘
在ASP.NET开发中,我们经常需要将DataTable中的数据转换为Json字符串以便于前后端交互。本文将向你展示如何实现这一过程,深入DataTable,通过序列化将其转化为Json格式。
一、使用JavaScriptSerializer实现DataTable到Json的转换
这里有一个方法Dtb2Json,它接受一个DataTable作为参数,然后使用JavaScriptSerializer进行序列化。遍历DataTable的每一行和每一列,将列名和对应的值存储在一个Dictionary中,然后将所有的Dictionary对象加入到ArrayList中。对整个ArrayList进行序列化,生成Json字符串。具体代码如下:
```csharp
private string Dtb2Json(DataTable dtb)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
System.Collections.ArrayList dic = new System.Collections.ArrayList();
foreach (DataRow dr in dtb.Rows)
{
System.Collections.Generic.Dictionary
foreach (DataColumn dc in dtb.Columns)
{
drow.Add(dc.ColumnName, dr[dc.ColumnName]);
}
dic.Add(drow);
}
return jss.Serialize(dic);
}
```
二、手动构建Json字符串
除了使用序列化工具,我们还可以手动构建Json字符串。CreateJsonParameters方法展示了这一过程。它首先创建一个StringBuilder对象,然后遍历DataTable的每一行和每一列,将列名和对应的值以Json的格式添加到StringBuilder中。这个方法更直观,可以更好地控制输出的Json格式。具体代码如下:
```csharp
public static string CreateJsonParameters(DataTable dt)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
if (dt != null && dt.Rows.Count > 0)
{
sb.Append("[");
for (int i = 0; i < dt.Rows.Count; i++)
{
sb.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
if (j < dt.Columns.Count - 1)
{
sb.Append("/" + dt.Columns[j].ColumnName + ":/\"" + dt.Rows[i][j].ToString() + "\",");
}
else
{
sb.Append("/" + dt.Columns[j].ColumnName + ":/\"" + dt.Rows[i][j].ToString() + "\"");
}
}
if (i == dt.Rows.Count - 1)
{
sb.Append("}");
}
else
{
sb.Append("},");
}
}
sb.Append("]");
}
else { return null; }
return sb.ToString();
}
```csharp希望本文能对你有所帮助,让你在ASP.NET程序设计中更加游刃有余。
编程语言
- asp.net使用DataTable构造Json字符串的方法
- 详解用Node.js写一个简单的命令行工具
- SQL2000中改名和删除默认sa帐号的最安全方法
- php时间计算相关问题小结
- jQuery+jRange实现滑动选取数值范围特效
- PHP实现将MySQL重复ID二维数组重组为三维数组的方
- WEB开发时常用的正则表达式(PHP和Javascript)
- 关于echarts在节点显示动态数据及添加提示文本所
- php中的抽象方法和抽象类
- Godaddy 导入导出MSSQL数据库的实现步骤
- php计算程序运行时间的简单例子分享
- PHP的mysqli_stat()函数讲解
- 帝国CMS留言板回复后发送EMAIL通知客户
- 自定义vue组件发布到npm的方法
- javascript实现checkbox全选的代码
- JavaScript运行过程中的“预编译阶段”和“执行阶