php json 转 datatable,如何将前台传来的JSON格式数据转换为DataTable类型

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

qlcindy

推荐于 2016.01.15

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:45%    等级:10

已帮助:3018人

//只能写个类来转啦....

#region DataTable 转换为Json字符串实例方法

///

/// GetClassTypeJosn 的摘要说明

///

public class GetClassTypeJosn : IHttpHandler

{

///

/// 文件名:DataTable 和Json 字符串互转

/// 版权所有:Copyright (C) Create Family Wealth liangjw

/// 创建标示:2013-08-03

///

//用法说明实例

public void ProcessRequest(HttpContext context)

{

context.Response.ContentType = "application/json";

context.Response.Charset = "utf-8";

HttpRequest req = context.Request;

string method = req["method"].ToStr().ToLower();

//获取合同明细列表 DataTable 转换为Json字符串

if (method == "txtdate")

{

string json = "";

BO.MakeContractMx bll = new MakeContractMx();

DataSet ds = bll.GetDataTable();

if (ds.Tables.Count > 0)

{

json =ToJson(ds.Tables[0]);

}

context.Response.Write(json);

return;

}

}

public bool IsReusable

{

get

{

return false;

}

}

}

#endregion

#region Json字符串转换为DataTable 实例方法

public DataTable JsonToDataTable(json)

{

DataTable dt= ToDataTable(json);

return dt;

}

#endregion

#region DataTable 转换为Json 字符串

///

/// DataTable 对象 转换为Json 字符串

///

///

///

public static string ToJson(this DataTable dt)

{

JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();

javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值

ArrayList arrayList = new ArrayList();

foreach (DataRow dataRow in dt.Rows)

{

Dictionary dictionary = new Dictionary(); //实例化一个参数集合

foreach (DataColumn dataColumn in dt.Columns)

{

dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToStr());

}

arrayList.Add(dictionary); //ArrayList集合中添加键值

}

return javaScriptSerializer.Serialize(arrayList); //返回一个json字符串

}

#endregion

#region Json 字符串 转换为 DataTable数据集合

///

/// Json 字符串 转换为 DataTable数据集合

///

///

///

public static DataTable ToDataTable(this string json)

{

DataTable dataTable = new DataTable(); //实例化

DataTable result;

try

{

JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();

javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值

ArrayList arrayList = javaScriptSerializer.Deserialize(json);

if (arrayList.Count > 0)

{

foreach (Dictionary dictionary in arrayList)

{

if (dictionary.Keys.Count() == 0)

{

result = dataTable;

return result;

}

if (dataTable.Columns.Count == 0)

{

foreach (string current in dictionary.Keys)

{

dataTable.Columns.Add(current, dictionary[current].GetType());

}

}

DataRow dataRow = dataTable.NewRow();

foreach (string current in dictionary.Keys)

{

dataRow[current] = dictionary[current];

}

dataTable.Rows.Add(dataRow); //循环添加行到DataTable中

}

}

}

catch

{

}

result = dataTable;

return result;

}

#endregion

#region 转换为string字符串类型

///

/// 转换为string字符串类型

///

/// 获取需要转换的值

/// 需要格式化的位数

/// 返回一个新的字符串

public static string ToStr(this object s, string format = "")

{

string result = "";

try

{

if (format == "")

{

result = s.ToString();

}

else

{

result = string.Format("{0:" + format + "}", s);

}

}

catch

{

}

return result;

}

#endregion

00分享举报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值