当前位置:首页 >.NET > 正文内容

JSON与DataTable(DataSet)相互转化

大滑稽11年前 (2014-03-24).NET1234
# region dataTable转换成Json格式

/// <summary>      
/// dataTable转换成Json格式      
/// </summary>      
/// <param name="dt"></param>      
/// <returns></returns>      
public static string ToJson(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("]");
	jsonBuilder.Append("}");
	return jsonBuilder.ToString();
}

# endregion dataTable转换成Json格式

# region DataSet转换成Json格式

/// <summary>      
/// DataSet转换成Json格式      
/// </summary>      
/// <param name="ds">DataSet</param>      
/// <returns></returns>      
public static string ToJson(DataSet ds)
{
	StringBuilder json = new StringBuilder();

	foreach (DataTable dt in ds.Tables)
	{
		json.Append("{/"");
		json.Append(dt.TableName);
		json.Append("/":");
		json.Append(ToJson(dt));
		json.Append("}");
	}
	return json.ToString();
}
# endregion

public static DataTable JsonToDataTable(string strJson)
{
	//取出表名  
	Regex 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)
			{
				DataColumn dc = new DataColumn();
				string[] strCell = str.Split(':');
				dc.ColumnName = strCell[0].ToString();
				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;
}


扫描二维码推送至手机访问。

版权声明:本文由第★一★次发布,如需转载请注明出处。

本文链接:https://wpers.net/post/33.html

“JSON与DataTable(DataSet)相互转化” 的相关文章

Cbo控件数据源绑定

 //Cbo控件数据源绑定DataTable DtType = noteType.GetTypeList("");         ...

C#遍历控件的方法

首先,要想遍历,就必须找到你想找的表单里面的所有控件,然后一个个的逐一比对,当找到了你需要的控件的时候,再做你需要的操作。1、foreach方法foreach (Control control in ...

Linq读写XML

         private List<News> GetNews(string html)    &n...

修改注册表限制软件使用次数

 private void Form1_Load(object sender, System.EventArgs e){RegistryKey RootKey,RegKey; //项名为:HKEY_CURRENT_USER\So...

c#中分页显示数据

     //c#中分页显示数据    public partial class Form1 : Form    {  ...

C#修改浏览器主页

string key = @"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main";      &n...