最近研究JSON,想把datatable直接序列化为json,上网查了查,发现.net下有这么两种json序列化的方法:
一是用Newtonsoft.Json.dll进行json序列化,这个从
json的官网
上就可以找到,使用比较方便。
二是用xml-2-json.xsl这个xslt模板转换,详细请看这里
http://blog.csdn.net/isaaq/archive/2006/12/09/1436357.aspx
两种序列话方法都可以达到要求,但是我想看一下两种分别的速度如何,于是自己写个程序试一下。
生成datatable的代码如下
private
DataTable getDataTable(
string
name)
…
{
DataTable dt
=
new
DataTable(name);
dt.Columns.Add(
new
DataColumn(
”
name
”
,
typeof
(
string
)));
dt.Columns.Add(
new
DataColumn(
”
password
”
,
typeof
(
string
)));
DataRow dr;
for
(
int
i
=
0
; i
<
100
; i
++
)
…
{
dr
=
dt.NewRow();
dr[
0
]
=
i.ToString();
dr[
1
]
=
”
P
”
+
i.ToString();
dt.Rows.Add(dr);
}
return
dt;
}
其中循环次数分别是10,100,1000,1000,然后看一下两种方法的序列话速度。结果见下表
JSON.DLL | XSLT | |
10 | 0毫秒 | 31.25毫秒 |
100 | 15.625毫秒 | 31.25毫秒 |
1000 | 46.875毫秒 | 140.625毫秒 |
10000 | 9531.25毫秒 | 31218.75毫秒 |
程序写的并不严谨,只是简单比对一下速度而已,数据都是多次运行取的相当稳定的值而已,并不能说明具体时间。有一个奇怪的现象是,循环次数为10000时,用XSLT转换一般都是30秒左右,但有时会有10秒左右的现象出现,不知是什么原因。
有需要源代码的朋友请留下邮箱,我会尽快发过去的。另外想请大家帮忙看一下我用json.dll序列化datatable的方法是否正确,我是把datatable转换为xml,然后用json.dll转换xml为json,不知道有没有更好的方法,谢谢大家。
源代码已经上传到
http://download.csdn.net/user/luq885/
,请自行下载