将datatable和dataset中的数据转为json数据 与反转
2015-01-22 10:18
357 查看
using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication2 { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //模拟dataTable 1 DataTable dt1 = new DataTable("myTable1"); dt1.Columns.Add("ID", typeof(Int32)); dt1.Columns.Add("name", typeof(string)); dt1.Columns.Add("description", typeof(string)); for (int i = 1; i < 10; i++) { DataRow dr = dt1.NewRow(); dr["ID"] = "007" + i; dr["name"] = "我是00" + i; dr["description"] = "描述" + i; dt1.Rows.Add(dr); } //模拟dataTable 2 DataTable dt2 = new DataTable("myTable2"); dt2.Columns.Add("ID", typeof(Int32)); dt2.Columns.Add("name", typeof(string)); dt2.Columns.Add("description", typeof(string)); for (int i = 1; i < 10; i++) { DataRow dr = dt2.NewRow(); dr["ID"] = "007" + i; dr["name"] = "我是00" + i; dr["description"] = "描述" + i; dt2.Rows.Add(dr); } //模拟dataSet DataSet ds = new DataSet(); ds.Tables.Add(dt1); ds.Tables.Add(dt2); dtJson.InnerHtml = ToJson(dt1); dsJson.InnerHtml = ToJson(ds); fileJson(ToJson(ds)); } public bool fileJson(string file) { FileStream fs = new FileStream("e://Login.json", FileMode.Create); StreamWriter sw = new StreamWriter(fs); sw.Write(file); sw.Flush(); sw.Close(); fs.Close(); return true; } public static string ToJson(DataTable dt) { StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.Append("{"); jsonBuilder.Append(singleDtToJson(dt)); jsonBuilder.Append("}"); return jsonBuilder.ToString(); } public static string ToJson(DataSet ds) { StringBuilder json = new StringBuilder(); json.Append("{"); foreach (DataTable dt in ds.Tables) { json.Append(singleDtToJson(dt)); json.Append(","); } json.Remove(json.Length - 1, 1); json.Append("}"); return json.ToString(); } //为了配合dataset,将datatable固定成一个格式,利于dataset拼接成数组 public static string singleDtToJson(DataTable dt) { StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.Append("\""); jsonBuilder.Append(dt.TableName.ToString()); jsonBuilder.Append("\":["); for (int i = 0; i < dt.Rows.Count; i++) { jsonBuilder.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { jsonBuilder.Append("\""); jsonBuilder.Append(dt.Columns[j].ColumnName); jsonBuilder.Append("\":\""); jsonBuilder.Append(dt.Rows[i][j].ToString()); jsonBuilder.Append("\","); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("},"); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("]"); return jsonBuilder.ToString(); } } }
/// <summary>
/// 将json转换为DataTable
/// </summary>
/// <param name="strJson">得到的json</param>
/// <returns></returns>
private DataTable JsonToDataTable(string strJson)
{
//转换json格式
strJson = strJson.Replace(",\"", "*\"").Replace("\":", "\"#").ToString();
//取出表名
var rg = new Regex(@"(?<={)[^:]+(?=:\[)", RegexOptions.IgnoreCase);
string strName = rg.Match(strJson).Value;
DataTable tb = null;
//去除表名
strJson = strJson.Substring(strJson.IndexOf("[") + 1);
strJson = strJson.Substring(0, strJson.IndexOf("]"));
//获取数据
rg = new Regex(@"(?<={)[^}]+(?=})");
MatchCollection mc = rg.Matches(strJson);
for (int i = 0; i < mc.Count; i++)
{
string strRow = mc[i].Value;
string[] strRows = strRow.Split('*');
//创建表
if (tb == null)
{
tb = new DataTable();
tb.TableName = strName;
foreach (string str in strRows)
{
var dc = new DataColumn();
string[] strCell = str.Split('#');
if (strCell[0].Substring(0, 1) == "\"")
{
int a = strCell[0].Length;
dc.ColumnName = strCell[0].Substring(1, a - 2);
}
else
{
dc.ColumnName = strCell[0];
}
tb.Columns.Add(dc);
}
tb.AcceptChanges();
}
//增加内容
DataRow dr = tb.NewRow();
for (int r = 0; r < strRows.Length; r++)
{
dr[r] = strRows[r].Split('#')[1].Trim().Replace(",", ",").Replace(":", ":").Replace("\"", "");
}
tb.Rows.Add(dr);
tb.AcceptChanges();
}
return tb;
}
相关文章推荐
- 一种将数据表DataTable转为JSON格式的新方法
- JSON 的数据转换格式(DataTable或DataSet) -善良公社项目
- 一种将数据表DataTable转为JSON格式的新方法
- 如何通过Java的Web服务器把DataSet或DataTable数据通过json格式传回给C#的客户端
- 将数据表DataTable转为压缩JSON格式
- JSON 的数据转换格式(DataTable或DataSet) -善良公社项目
- DataTable转为JSON数据格式代码
- C#将DataSet或DataTable转换成Json格式数据传递到前台JS脚本
- DataSet、DataTable、Json、List 等各种数据的相互转化
- DataTable转为JSON数据格式代码
- List<T>、DataSet、DataTable转到Json格式数据
- DataTable转为JSON数据格式代码
- [原] 一种将数据表DataTable转为JSON格式的新方法
- DataTable转为JSON数据格式代码
- 利用DataSet、DataTable、DataView按照自定义条件过滤数据
- Gridview的数据源可为dataview,dataset,datatable,list 等,只要符合Ilist 结口的数据集合.
- 数据绑定技术_单值数据绑定示例;将 DataTable,DataSet,DataView,DataReader 绑定到 DataGrid 控件示例;DataBinder.Eval;数组的值赋给ListBox1;Hashtable 绑定到;RadioButtonList;将XML 文件做为数据源绑定到控件
- 利用DataSet、DataTable、DataView按照自定义条件过滤数据
- C#中将DataTable数据转为实体对象
- [ASP.NET-C#]将DataSet、DataTable中的数据导出为Excel的解决方法