最近在做项目,有一个功能需要后台接收前端传输过来的json格式数据,然后保存到数据库。由于前端过来的数据可能会比较多,所以打算用Update方法,传入DataTable进行数据的保存,所以就需要把前端json数据转化为DataTable格式。好了,闲话不多说啦,下面是json个数转化为DataTable的代码:
//项目中用到的json格式如下:
[{"id":"29","name":"AMOI15s-DVB","filesize":"8578064","duration":"15080",
"bitrate":"4500000","video_stream_type1":"2","audio_stream_type1":"4","active":"1"},
{"id":"28","name":"BENQ30s-DVB",,"filesize":"17012308","duration":"30080",
"bitrate":"4500000","video_stream_type1":"2","audio_stream_type1":"4","active":"1"},{"id":"1","name":"zhongqiu","filesize":"69341168","duration":"94680",
"bitrate":"5856128","video_stream_type1":"2","audio_stream_type1":"4","active":"1"}]
要保存的DataTable格式:
public DataTable getDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("channelid", typeof(System.Int32));
dt.Columns.Add("name", typeof(System.String));
dt.Columns.Add("filesize", typeof(System.Int32));
dt.Columns.Add("duration", typeof(System.Int32));
dt.Columns.Add("bitrate", typeof(System.Int32));
dt.Columns.Add("video_stream_type1", typeof(System.Int32));
dt.Columns.Add("audio_stream_type1", typeof(System.Int32));
dt.Columns.Add("active", typeof(System.Int32));
return dt;
}
/// <summary>
/// json转换为DataTable
/// </summary>
/// <param name="json">需要转化的json格式字符串</param>
/// <returns></returns>
public DataTable updateInfo(string json)
{
System.Web.Script.Serialization.JavaScriptSerializer jss =
new System.Web.Script.Serialization.JavaScriptSerializer();
object[] obj = (object[])jss.DeserializeObject(json);
Dictionary<string, object> dic;
DataRow dr;
DataTable dt = getDataTable();
foreach (object _obj in obj)
{
dr = dt.NewRow();
dt.Rows.Add(dr);
dic = (Dictionary<string, object>)_obj;
dr["channelid"] = dic["channelid"];
dr["name"] = dic["name"];
dr["filesize"] = dic["filesize"];
dr["duration"] = dic["duration"];
dr["bitrate"] = dic["bitrate"];
dr["video_stream_type1"] = dic["video_stream_type1"];
dr["audio_stream_type1"] = dic["audio_stream_type1"];
dr["active"] = dic["active"];
}
return dt;
}