1.将json转化为dataTable,这里先将json字符串转为ArrayList集合,再遍历每个集合中的对象,用字典存储键值,再赋值给dataTable.但是dataTable一直都是空的。
2.代码:
json = "[{\"id\":\"329\",\"txt\":\"IT\"}, {\"id\":\"338\",\"txt\":\"机构2\"},{\"id\":\"888\",\"txt\":\"内部2\"}]";
DataTable dt = jsonToDataTable(json);
public static DataTable jsonToDataTable(string json){
DataTable dataTable = new DataTable();
DataTable result = null;
try
{
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
javaScriptSerializer.MaxJsonLength = Int32.MaxValue;
ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(json);
if (arrayList.Count > 0) {
foreach (Dictionary<string, object> dictionary in arrayList) {
if (dictionary.Keys.Count<string>() == 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); //这里datarow都有值,但是datatable没加上
}
}
}
catch { };
result = dataTable;
return result;
}
快下班了,粗一看,我记得DataTable添加完有一个保存的函数,否则,你result = Datatable,似乎指向的局部变量会释放掉添加的记录,这时候是添加在缓存的。回家再仔细看下