DataTable或DataSet与JSON互转
2013-09-28 10:26
357 查看
通过AJAX异步减少网络内容传输,而JSON则可以把传输内容缩减到纯数据;然后利用jQuery内置的AJAX功能直接获得JSON格式的数据;在客户端直接绑定到数据控件里面,从而达到最优。
#region dataTable转换成Json格式
/// <summary>
/// dataTable转换成Json格式
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string DataTable2Json(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 Dataset2Json(DataSet ds)
{
StringBuilder json = new StringBuilder();
foreach (DataTable dt in ds.Tables)
{
json.Append("{\"");
json.Append(dt.TableName);
json.Append("\":");
json.Append(DataTable2Json(dt));
json.Append("}");
}
return json.ToString();
}
#endregion
今天又发现了有更好的转换方法,具体如下 :
[csharp]
view plaincopyprint?
public class ConventDataTableToJson
{
/// <summary>
/// 序列化方法(带分页)
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string Serialize(DataTable dt)
{
List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
foreach (DataRow dr in dt.Rows)
{
Dictionary<string, object> result = new Dictionary<string, object>();
foreach (DataColumn dc in dt.Columns)
{
result.Add(dc.ColumnName, dr[dc].ToString());
}
list.Add(result);
}
int count = 0;
try
{
count = Convert.ToInt32(dt.TableName);
}
catch (System.Exception ex)
{
count = dt.Rows.Count;
}
string strReturn = "";
if (count == 0)
{
strReturn = "{\"totalCount\":0,\"data\":[]}";
}
else
{
strReturn = ConventToJson(list, count);
}
return strReturn;
}
/// <summary>
/// 转换为JSON对象
/// </summary>
/// <returns></returns>
public static string ConventToJson<T>(List<T> list, int count)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
string strJson = serializer.Serialize(list);
strJson = strJson.Substring(1);
strJson = strJson.Insert(0, "{totalCount:" + count + ",data:[");
strJson += "}";
return strJson;
}
/// <summary>
/// 不需要分页
/// </summary>
/// <param name="dt"></param>
/// <param name="flag">false</param>
/// <returns></returns>
public static string Serialize(DataTable dt,bool flag)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
foreach (DataRow dr in dt.Rows)
{
Dictionary<string, object> result = new Dictionary<string, object>();
foreach (DataColumn dc in dt.Columns)
{
result.Add(dc.ColumnName, dr[dc].ToString());
}
list.Add(result);
}
return serializer.Serialize(list); ;
}
相关文章推荐
- C#中对象,字符串,dataTable、DataReader、DataSet,对象集合转换成Json字符串方法。
- 将JSON转成DataSet(DataTable)
- DataSet、DataTable转换为Json
- JSON与DataTable(DataSet)相互转化
- C#将DataSet或DataTable转换成Json格式数据传递到前台JS脚本
- DataSet(DataTable)转化为json格式
- 将DataSet(DataTable)转换成JSON格式(生成JS文件存储)
- Newtonsoft.Json DataSet/DataTable转化为JSON字符串
- 如何通过Java的Web服务器把DataSet或DataTable数据通过json格式传回给C#的客户端
- dataTable、dataset转换成Json格式
- C#中对象,字符串,dataTable、DataReader、DataSet,对象集合转换成Json字符串方法。
- C#中DataSet、DataTable、String、Object等对象转换成Json
- Json.net如何支持DataSet DataTable.
- JSON与DataTable(DataSet)相互转化
- dataset或dataTable转成json串
- [Json] C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json (转载)
- dataTable/dataSet转换成Json格式
- C#中的DataSet、string、DataTable、对象转换成Json的实现代码
- C#中的DataSet、string、DataTable 、对象转换成Json
- C#中的DataSet、string、DataTable、对象转换成Json的实现代码