在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List、DataTable转换为Json格式。特别在使用Extjs框架的时候,Ajax异步请求的数据格式就是Json。鉴于此,我今天来分享将DataTable 转换成 Json的3种方法。换句话说如何在ASP.NET将一个DataTable序列化为 Json数组。或者如何从一个DataTable返回一个Json字符串。这篇文章将采用StringBuilder,JavaScriptSerializer和 Json.Net DLL (Newtonsoft) 这3种方法实现这一目标。

Json概述

JavaScript Object Notation (Json)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。这些特性使Json成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。Json采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯,包括C、C++、C#、Java、JavaScript、Perl、Python等等。

这些特性使Json成为一种理想的数据交换语言。因此 基于AJAX应用程序,Json已经成为一种用于数据交换的流行格式。总之,Json是一种存储和交换数据的语法,易于操作,也是除XML之外的不二之选。

步骤:

首先我们从Microsoft SQL Server 获取数据到DataTable,也可以给DataTable动态添加行。代码如下:

步骤:

首先我们从Microsoft SQL Server的获取数据到数据表,也可以给数据表动态添加行代码如下:

privateDataTable getData()

{

DataTable dt = newDataTable();

dt.Columns.Add("编号",typeof(Int32));

dt.Columns.Add("姓名",typeof(string));

dt.Columns.Add("性别",typeof(string));

dt.Columns.Add("学历",typeof(string));

dt.Rows.Add(1, "王超","男","本科");

dt.Rows.Add(2, "周丽","女","专科");

dt.Rows.Add(3, "李娟","女","专科");

dt.Rows.Add(4, "杨明","男","硕士");

dt.Rows.Add(5, "张德","男","本科");

returndt;

}

下面开始通过每一种方法实现DataTable转换成 Json 对象。

方法1:使用StringBuilder

这是Json样本数据的样子: {"姓名 ":"张三", "年龄":"30"}。Json里用花括号保存对象,它可以包含多个名称/值对。所以使用StringBuilder我们可以创建一个类似的Json字符串。

由于要使用StringBuilder类,我们首先需要导入System.Text命名空间,如下:

usingSystem.Text;

下面的代码将生成一个Json字符串,遍历DataTable的行和列,获取数据,添加到一个StringBuilder对象 JsonString,然后返回这个对象。

publicstringDataTableToJson(DataTable table)

{

var JsonString = newStringBuilder();

if(table.Rows.Count > 0)

{

JsonString.Append("[");

for(inti = 0; i

{

JsonString.Append("{");

for(intj = 0; j

{

if(j

{

JsonString.Append("\""+ table.Columns[j].ColumnName.ToString() +"\":"+"\""+ table.Rows[i][j].ToString() +"\",");

}

elseif(j == table.Columns.Count - 1)

{

JsonString.Append("\""+ table.Columns[j].ColumnName.ToString() +"\":"+"\""+ table.Rows[i][j].ToString() +"\"");

}

}

if(i == table.Rows.Count - 1)

{

JsonString.Append("}");

}

else

{

JsonString.Append("},");

}

}

JsonString.Append("]");

}

returnJsonString.ToString();

}

方法2:使用 JavaScriptSerializer.

首先我们添加System.Web.Script.Serialization命名空间,如下:

usingSystem.Web.Script.Serialization;

JavaScriptSerializer这个类是由异步通信层内部使用来序列化和反序列化数据。如果序列化一个对象,就使用序列化方法。反序列化Json字符串,使用Deserialize或DeserializeObject方法。在这里,我们使用序列化方法得到Json格式的数据。代码以下:

publicstringDataTableToJsonWithJavaScriptSerializer(DataTable table)

{

JavaScriptSerializer jsSerializer = newJavaScriptSerializer();

List > parentRow =newList > ();

Dictionary  childRow;

foreach(DataRow rowintable.Rows)

{

childRow = newDictionary  ();

foreach(DataColumn colintable.Columns)

{

childRow.Add(col.ColumnName, row[col]);

}

parentRow.Add(childRow);

}

returnjsSerializer.Serialize(parentRow);

}

方法3:使用Json.Net DLL (Newtonsoft)。

这个方法中要添加Json.Net DLL引用,我们可以从Newtonsoft下载Json.Net DLL,再导入命名空间,代码如下:

usingNewtonsoft.Json;

publicstringDataTableToJsonWithJsonNet(DataTable table)

{

stringJsonString=string.Empty;

JsonString = JsonConvert.SerializeObject(table);

returnJsonString;

}

效果图:

StringBuilder方法的全部代码:

usingSystem;

usingSystem.Text;

usingSystem.Data;

publicpartialclassDefault2 : System.Web.UI.Page

{

privatestringsasss;

protectedvoidPage_Load(objectsender, EventArgs e)

{

DataTable table = getData();

sasss = DataTableToJson(table);

Response.Write(sasss + "
");

}

publicstringDataTableToJson(DataTable table)

{

var JsonString = newStringBuilder();

if(table.Rows.Count > 0)

{

JsonString.Append("[");

for(inti = 0; i

{

JsonString.Append("{");

for(intj = 0; j

{

if(j

{

JsonString.Append("\""+ table.Columns[j].ColumnName.ToString() +"\":"+"\""+ table.Rows[i][j].ToString() +"\",");

}

elseif(j == table.Columns.Count - 1)

{

JsonString.Append("\""+ table.Columns[j].ColumnName.ToString() +"\":"+"\""+ table.Rows[i][j].ToString() +"\"");

}

}

if(i == table.Rows.Count - 1)

{

JsonString.Append("}");

}

else

{

JsonString.Append("},");

}

}

JsonString.Append("]");

}

returnJsonString.ToString();

}

privateDataTable getData()

{

DataTable dt = newDataTable();

dt.Columns.Add("编号",typeof(Int32));

dt.Columns.Add("姓名",typeof(string));

dt.Columns.Add("性别",typeof(string));

dt.Columns.Add("学历",typeof(string));

dt.Rows.Add(1, "王超","男","本科");

dt.Rows.Add(2, "周丽","女","专科");

dt.Rows.Add(3, "李娟","女","专科");

dt.Rows.Add(4, "杨明","男","硕士");

dt.Rows.Add(5, "张德","男","本科");

returndt;

}

}

badatatable转成json_DataTable 转换成 Json的3种方法 | YuXi相关推荐

  1. badatatable转成json_C# DataTable 转换成JSON数据 三种方法

    在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List.DataTable转换为Json格式.特别在使用Extjs框架的时候,Ajax异步请求的数 ...

  2. java 把map转换成json_map转换成JSON的3种方法

    1 json-lib net.sf.json-lib json-lib 2.4 jdk15 import java.util.HashMap; import java.util.Map; import ...

  3. 视频文件 wrf格式,可以通过WRF格式视频转换器_wrf转成wmv 转换成 wmv格式,可以在电脑或手机上观看,且声音也能转换过来。之前wrf用耳机貌似播放不出来,之后是可以播放出来的。

    视频文件 wrf格式,可以通过WRF格式视频转换器_wrf转成wmv 转换成 wmv格式,可以在电脑或手机上观看,且声音也能转换过来.之前wrf用耳机貌似播放不出来,之后是可以播放出来的. wmv可以 ...

  4. 如何把PDF转换成Word文档?这几种方法看一遍就会

    怎么把PDF文件转换成Word文档呢?大家在日常的学习和工作中可能经常需要处理各种文件,相信使用的最多的文件格式就是PDF文件和Word文档了,因为用它们来传输文件和编辑文件非常好用.但有时我们收到的 ...

  5. pdf怎么转换成jpg格式的图片,5种方法详细教程

    pdf怎么转换成jpg格式的图片,为什么这样做呢?那是因为将PDF转换成JPG格式的主要原因是方便在演示文稿.网页或社交媒体等平台上展示和分享PDF文件的内容.JPG格式具有广泛的兼容性和易于传输的特 ...

  6. ceb怎么转换成word_pdf怎么转换成Word?分享PDF转word3种方法!

    pdf怎么转换成Word?在工作中,我常常需要将写好的一份文件或者合同以PDF格式保存起来,然后发给对方,这样接收方就可以直接打印了.但是如果PDF文档需要修改的话,我们还得将PDF转为Word.今天 ...

  7. CAJ文件怎么转换成Word文档?这2种方法值得学习

    CAJ文件在工作中并不多见,但对于经常在知网搜索下载资料的人并不陌生,但这种文档修改起来比较复杂,一般我们都会先将其转成Word文档.那么如何才能将CAJ转换成Word呢? 对于了解CAJ文档的人都知 ...

  8. 将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法(亲测)

    在用pandas包和numpy包对数据进行分析和计算时,经常用到DataFrame和array类型的数据.在对DataFrame类型的数据进行处理时,需要将其转换成array类型,是以下列出了三种转换 ...

  9. [机器学习笔记] 将数据拆分成训练集和测试集的几种方法

    问题描述: 一般情况下, 我们习惯将原始数据中的80% 作为训练集, 20% 作为测试集(当数据量足够大的时候,也可以将10% 作为测试集. 数据量较小时,如果每次都是随机划分训练集,执行多次训练后, ...

最新文章

  1. PyTorch 笔记(20)— torchvision 的 datasets、transforms 数据预览和加载、模型搭建(torch.nn.Conv2d/MaxPool2d/Dropout)
  2. 【原创·教程·连载】Microsoft SQL Server 2008 Reporting Services应用系列(一)安装篇...
  3. html button 隐藏_java servlet与html数据交互初体验
  4. onvif_discover虚拟摄像头
  5. 开发中 常用 js 记录(一)
  6. 机器学习中的范数规则化之L21范数
  7. td中文字间距_怎么做?文字编排创意的小心思
  8. html5隐藏自定义控制按钮,用仿ActionScript的语法来编写html5——第七篇,自定义按钮...
  9. paip.跨平台跨语言自定义加密方法
  10. 【java学习之旅】——JSP入门
  11. 做短视频自媒体,新手一个月6000多,全靠这些工具,抓紧收藏
  12. 过去一年对我帮助最大的三本书
  13. 将dubbo暴露HTTP服务
  14. 如何将页脚(footer)保持在页面底部
  15. HTML怎么画圆角平行四边形,圆角平行四边形钻搅机的制作方法
  16. 【原创】超级详细的iPhone铃声制作、导入、设置全过程教程
  17. 计算机协会游园活动方案,计算机爱好者协会建设策划方案
  18. android学习笔记之GoogleMap
  19. 为什么选php语言做网站,php做网站教程:PHP语言怎么做网站
  20. su 和su -的区别

热门文章

  1. python文本字符分析编写程序接收字符串_Python程序接受包含所有元音的字符串
  2. 混合高斯模型及其求解方法
  3. Matlab绘制频率特性
  4. WINDOWS无法配置此无线连接,如果您已经启用其他程序管理此无线连接,
  5. 马化腾不会告诉你的 腾讯专属WEB前端知识结构和技能汇总
  6. 万卷书 - 快速写作 [Write Your Book in a Flash]
  7. Excel初步验证身份证号的合法性
  8. 社交网站facebook_如何退出Facebook,Twitter,Google +和其他社交网络
  9. SQL server延时(WAITFOR)
  10. IT 2018年:ManageEngine回顾总结