在进行数据传递的时候,有时我们需要通过Ajax的方式或者其他的方式传递一个数据列表,可以将DataTable或者其他形式的数据列表转换为JSON的格式,通过Ajax实体的形式进行传递。

比如说:

/// <summary>
/// DataTable 转换为Json
/// </summary>
/// <param name="dt">datatable</param>
/// <returns></returns>
public string DataTableToJson(DataTable dt)
{
//如果原数据为空,则直接返回空结构
if (dt == null || dt.Rows.Count<=) return "{}"; string columnFirst = "";
List<string> result = new List<string>();
StringBuilder Json = new StringBuilder();
if (dt.Rows.Count > )
{
for (int i = ; i < dt.Rows.Count; i++)
{
if (columnFirst != dt.Rows[i][].ToString())
{
if (i != )
{
AddNewJson(Json, result, dt);
}
columnFirst = dt.Rows[i][].ToString();
result = new List<string>();
for (int k = ; k < dt.Columns.Count; k++)
{
result.Add("\"" + dt.Rows[i][k].ToString() + "\"");
}
}
else
{
for (int k = ; k < dt.Columns.Count; k++)
{
if (!result[k].Contains(dt.Rows[i][k].ToString()))
{
result[k] += ",\"" + dt.Rows[i][k].ToString() + "\"";
}
}
}
if (i == dt.Rows.Count - )
{
AddNewJson(Json, result, dt);
}
}
}
return Json.ToString();
} /// <summary>
/// 添加新的Json
/// </summary>
/// <param name="Json"></param>
/// <param name="result"></param>
/// <param name="dt"></param>
private void AddNewJson(StringBuilder Json, List<string> result, DataTable dt)
{
Json.Append("{");
for (int i = ; i < dt.Columns.Count; i++)
{
Json.Append("\"");
Json.Append(dt.Columns[i].ColumnName);
Json.Append("\":");
if (result[i].Contains(","))
{
Json.Append("[");
Json.Append(result[i]);
if (i == dt.Columns.Count - )
{
Json.Append("]");
}
else
{
Json.Append("],");
}
}
else
{
Json.Append(result[i]);
if (i != dt.Columns.Count - )
{
Json.Append(",");
}
}
}
Json.Append("}");
}

.NET DataTable转换为JSON格式的字符串的更多相关文章

  1. DataTable转换为Json格式

    private string DataTableToJson(DataTable dt) { string Json = ""; Json = Json + "[&quo ...

  2. Asp.net 将DataTable 或者DataSet 转换为Json 格式

    Web 开发中,将从数据库中取到的数据直接转换为 Json 格式的数据,在前台通过Ajax 无刷新显示在界面上,下面提供将DataTable 或者DataSet 转换为Json 的方法 /// < ...

  3. JSon_零基础_006_将JSon格式的字符串转换为Java对象

    需求: 将JSon格式的字符串转换为Java对象. 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“name.values”集合, 通过get(key ...

  4. JSon_零基础_005_将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面

    将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面 导入jar包: 编写:po(bean)代码: package com.west.webcourse.po; /** * 第 ...

  5. JSon_零基础_005_将po(bean)对象转换为JSon格式的对象字符串,返回给界面

    将po(bean)对象转换为JSon格式的对象字符串,返回给界面 导入jar包: 编写po(bean)类: package com.west.webcourse.po; /** * 第01步:编写be ...

  6. JSon_零基础_004_将Set集合对象转换为JSon格式的对象字符串,返回给界面

    将Set集合对象转换为JSon格式的对象字符串,返回给界面 需要导入的jar包: 编写:servlet: package com.west.webcourse.servlet; import java ...

  7. JSon_零基础_003_将Map集合对象转换为JSon格式的对象字符串,返回给界面

    将Map集合对象转换为JSon格式的对象字符串,返回给界面 需导入的jar包: 编写servlet: package com.west.webcourse.servlet; import java.i ...

  8. JSon_零基础_002_将List类型数组转换为JSon格式的对象字符串,返回给界面

    将List类型数组转换为JSon格式的对象字符串,返回给界面 所需要导入的包: 编写bean: package com.west.webcourse.po; /** * 第01步:编写bean类, * ...

  9. JSon_零基础_001_将布尔类型数组转换为JSon格式字符串,返回给界面

    将布尔类型数组转换为JSon格式字符串,返回给界面 需要导入包: 编写bean: package com.west.webcourse.po; /** * 第01步:编写bean类, * 下一步com ...

随机推荐

  1. Oracle中的游标(转)

    Oracle中的游标有两种:显式游标.隐式游标.显示游标是用cursor...is命令定义的游标,它可以对查询语句(select)返回的多条记录进行处理,而隐式游标是在执行插入 (insert).删除 ...

  2. 【t014】拯数

    [题目链接]:http://noi.qz5z.com/viewtask.asp?id=t014 [题意] [题解] 这个锁的序列,如果把末尾的0去掉; 然后再倒过来; 那么就是这个序列对应的格雷码了; ...

  3. Java访问修饰符(转)

    类.方法.成员变量和局部变量的可用修饰符 修饰符 类 成员方法 构造方法 成员变量 局部变量 abstract(抽象的) √ √ - - - static (静态的) - √ - √ - public ...

  4. [GeekBand] STL vector 查找拷贝操作效率分析

    本文参考文献::GeekBand课堂内容,授课老师:张文杰 :C++ Primer 11 中文版(第五版) :网络资料: 叶卡同学的部落格  http://www.leavesite.com/ htt ...

  5. 为什么java的web开发中URLEncoder.encode方法要为什么要调用两次

    一: 我们先看2个编码的情况 String name=java.net.URLEncoder.encode("测试", "UTF-8"); System.out ...

  6. Hibernate——(2)增删改查

    案例名称:Hibernate完成增删改查 案例描述:抽取出工具类并完成删除.修改.查询功能. 具体过程: 1.使用上面的例子(Hibernate--(1)Hibernate入门http://blog. ...

  7. ElasticSearch的javaAPI之Client

    翻译的原文:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/client.html#node-c ...

  8. CUDA—使用GPU暴力破解密码

    GPU支持大规模的并行加速运算,胜在量上,CPU处理大量的并行运算显得力不从心,它是胜在逻辑上.利用显卡加速的应用越来越多,但如果说GPU即将或最终将替代CPU还有点言过其实,二者最终将优势互补,各尽 ...

  9. mysql和mysqli使用笔记

    总体来说还算兼容得还行,很多函数直接加个i 即可,比如mysql_connect -> mysqli_connect. 有些细小的区别,mysqli 更严格,当变量有与字段重名时,改变变量名才可 ...

  10. Delphi内存管理(Integer、Boolean、Record、枚举等都是在作用域内编译器自动申请内存,出了作用域自动释放;另外,字符串、Variant、动态数组、接口也是由Delphi自动管理)

    一.什么是堆.栈? 程序需要的内存空间分为 heap(堆) 和 stack(栈),heap 是自由存储区, stack 是自动存储区,使用 heap 需要手动申请.手动释放, stack 是自动申请. ...