C#如何将datatable数据转换成json

var indexdata2 =
[
{ isexpand: 'true', text: '根节点', children: [
{ isexpand: 'true', text: "子节点", children: [
{ url: 'a.aspx', text: '子节点1' },
{ url: 'b.aspx', text: '子节点2' },
{ url: 'c.aspx', text: '子节点3' }
]
}]
}
];
如上是我要转换的格式,我要查询菜单,先查出根节点,再根据根节点id查出相应子节点,依次查下去,得到的数据转成json,赋值给前台js变量。怎么做?

/// <summary>
/// 将datatable转换为json
/// </summary>
/// <param name="dtb">Dt</param>
/// <returns>JSON字符串</returns>
public static 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<string, object> drow = new System.Collections.Generic.Dictionary<string, object>();
foreach (DataColumn dc in dtb.Columns)
{
drow.Add(dc.ColumnName, dr[dc.ColumnName]);
}
dic.Add(drow);

}
//序列化
return jss.Serialize(dic);
}追问

没明白,
1. 我查询根节点保存到datatable1, 然后查询下级几点保存到datatable2 ....
2. 前台js变量定义的是 var indexdata2, 怎么把后台值传给indexdata2

???

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-19
这个命名空间要要引入using System.Web.Script.Serialization;

JavaScriptSerializer js = new JavaScriptSerializer();

js.Serialize() 括号中填你需要序列化的东西
相似回答