badatatable转成json_DataTable 转换成 Json的3种方法 | YuXi
在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相关推荐
- badatatable转成json_C# DataTable 转换成JSON数据 三种方法
在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List.DataTable转换为Json格式.特别在使用Extjs框架的时候,Ajax异步请求的数 ...
- 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 ...
- 视频文件 wrf格式,可以通过WRF格式视频转换器_wrf转成wmv 转换成 wmv格式,可以在电脑或手机上观看,且声音也能转换过来。之前wrf用耳机貌似播放不出来,之后是可以播放出来的。
视频文件 wrf格式,可以通过WRF格式视频转换器_wrf转成wmv 转换成 wmv格式,可以在电脑或手机上观看,且声音也能转换过来.之前wrf用耳机貌似播放不出来,之后是可以播放出来的. wmv可以 ...
- 如何把PDF转换成Word文档?这几种方法看一遍就会
怎么把PDF文件转换成Word文档呢?大家在日常的学习和工作中可能经常需要处理各种文件,相信使用的最多的文件格式就是PDF文件和Word文档了,因为用它们来传输文件和编辑文件非常好用.但有时我们收到的 ...
- pdf怎么转换成jpg格式的图片,5种方法详细教程
pdf怎么转换成jpg格式的图片,为什么这样做呢?那是因为将PDF转换成JPG格式的主要原因是方便在演示文稿.网页或社交媒体等平台上展示和分享PDF文件的内容.JPG格式具有广泛的兼容性和易于传输的特 ...
- ceb怎么转换成word_pdf怎么转换成Word?分享PDF转word3种方法!
pdf怎么转换成Word?在工作中,我常常需要将写好的一份文件或者合同以PDF格式保存起来,然后发给对方,这样接收方就可以直接打印了.但是如果PDF文档需要修改的话,我们还得将PDF转为Word.今天 ...
- CAJ文件怎么转换成Word文档?这2种方法值得学习
CAJ文件在工作中并不多见,但对于经常在知网搜索下载资料的人并不陌生,但这种文档修改起来比较复杂,一般我们都会先将其转成Word文档.那么如何才能将CAJ转换成Word呢? 对于了解CAJ文档的人都知 ...
- 将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法(亲测)
在用pandas包和numpy包对数据进行分析和计算时,经常用到DataFrame和array类型的数据.在对DataFrame类型的数据进行处理时,需要将其转换成array类型,是以下列出了三种转换 ...
- [机器学习笔记] 将数据拆分成训练集和测试集的几种方法
问题描述: 一般情况下, 我们习惯将原始数据中的80% 作为训练集, 20% 作为测试集(当数据量足够大的时候,也可以将10% 作为测试集. 数据量较小时,如果每次都是随机划分训练集,执行多次训练后, ...
最新文章
- PyTorch 笔记(20)— torchvision 的 datasets、transforms 数据预览和加载、模型搭建(torch.nn.Conv2d/MaxPool2d/Dropout)
- 【原创·教程·连载】Microsoft SQL Server 2008 Reporting Services应用系列(一)安装篇...
- html button 隐藏_java servlet与html数据交互初体验
- onvif_discover虚拟摄像头
- 开发中 常用 js 记录(一)
- 机器学习中的范数规则化之L21范数
- td中文字间距_怎么做?文字编排创意的小心思
- html5隐藏自定义控制按钮,用仿ActionScript的语法来编写html5——第七篇,自定义按钮...
- paip.跨平台跨语言自定义加密方法
- 【java学习之旅】——JSP入门
- 做短视频自媒体,新手一个月6000多,全靠这些工具,抓紧收藏
- 过去一年对我帮助最大的三本书
- 将dubbo暴露HTTP服务
- 如何将页脚(footer)保持在页面底部
- HTML怎么画圆角平行四边形,圆角平行四边形钻搅机的制作方法
- 【原创】超级详细的iPhone铃声制作、导入、设置全过程教程
- 计算机协会游园活动方案,计算机爱好者协会建设策划方案
- android学习笔记之GoogleMap
- 为什么选php语言做网站,php做网站教程:PHP语言怎么做网站
- su 和su -的区别
热门文章
- python文本字符分析编写程序接收字符串_Python程序接受包含所有元音的字符串
- 混合高斯模型及其求解方法
- Matlab绘制频率特性
- WINDOWS无法配置此无线连接,如果您已经启用其他程序管理此无线连接,
- 马化腾不会告诉你的 腾讯专属WEB前端知识结构和技能汇总
- 万卷书 - 快速写作 [Write Your Book in a Flash]
- Excel初步验证身份证号的合法性
- 社交网站facebook_如何退出Facebook,Twitter,Google +和其他社交网络
- SQL server延时(WAITFOR)
- IT 2018年:ManageEngine回顾总结