JSON String to DataTable
Merhaba Arkadaşlar,
Sizinle JSON String’i DataTable’a çeviren bir metod paylaşmak istiyorum.
Aslında biliyorsunuz bu işlemi Json.NET framework’ü kullanarak kolayca yapabiliyoruz. Ama bazen çeşitli nedenlerle bu framework’ü kullanamayabiliriz. İşte size hiç bir üçüncü parti yazılım kullanmamıza gerek kalmadan JSON String’i DataTable’a çeviren metod:
// how to convert json to datatable in asp.net c#
protected DataTable ConvertJsonToDatatable(string jsonString)
{
DataTable dt = new DataTable();
//strip out bad characters
string[] jsonParts = Regex.Split(jsonString.Replace("[", "").Replace("]", ""), "},{");
//hold column names
List<string> dtColumns = new List<string>();
//get columns
foreach (string jp in jsonParts)
{
//only loop thru once to get column names
string[] propData = Regex.Split(jp.Replace("{", "").Replace("}", ""), ",");
foreach (string rowData in propData)
{
try
{
int idx = rowData.IndexOf(":");
string n = rowData.Substring(0, idx - 1);
string v = rowData.Substring(idx + 1);
if (!dtColumns.Contains(n))
{
dtColumns.Add(n.Replace("\"", ""));
}
}
catch (Exception ex)
{
throw new Exception(string.Format("Error Parsing Column Name : {0}", rowData));
}
}
break; // TODO: might not be correct. Was : Exit For
}
//build dt
foreach (string c in dtColumns)
{
dt.Columns.Add(c);
}
//get table data
foreach (string jp in jsonParts)
{
string[] propData = Regex.Split(jp.Replace("{", "").Replace("}", ""), ",");
DataRow nr = dt.NewRow();
foreach (string rowData in propData)
{
try
{
int idx = rowData.IndexOf(":");
string n = rowData.Substring(0, idx - 1).Replace("\"", "");
string v = rowData.Substring(idx + 1).Replace("\"", "");
nr[n] = v;
}
catch (Exception ex)
{
continue;
}
}
dt.Rows.Add(nr);
}
return dt;
}
Kaynak: http://dotnettec.com/convert-json-to-datatable-c-example/

Son yorumlar