Here I am writing a c# program that will convert a DataTable into JSON formate. First I created a DataTable and then inserted 5 Rows into it, then passed to a method ConvertDataTableToJSON(DataTable dt) and it will return a JSON string.
Source code:-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.IO;
using System.Data;
using System.Globalization;
using Newtonsoft.Json;
namespace ConsoleDemoApp
{
class ConvertDataTableToJSON
{
protected void Page_Load(object sender, EventArgs e)
{
try{
// Create datatable first
DataTable dt= GetTable();
// Convert it into JSON formate.
String jsonString= ConvertDataTableToJson(dt);
}
catch(Exception ex)
{
//catch the exception and write to txt file
writeInFile(ex.ToString());
}
}
// Create DataTable and insert some rows.
protected DataTable GetTable()
{
// Here we create a DataTable with four columns.
DataTable table = new DataTable();
table.Columns.Add("Id", typeof(int));
table.Columns.Add("Name", typeof(string));
table.Columns.Add("Gender", typeof(string));
table.Columns.Add("Email", typeof(DateTime));
// Here we add five DataRows.
table.Rows.Add(1, "Ram", "Male", "abc@gmail.com");
table.Rows.Add(2, "Shyam", "Male", "abc@gmail.com");
table.Rows.Add(3, "Kavita", "Female","abc@gmail.com");
table.Rows.Add(4, "Suman", "Female", "abc@gmail.com");
table.Rows.Add(4, "Naveen", "Male","abc@gmail.com");
return table;
}
// Method to convert.
protected string ConvertDataTableToJson(DataTable dt)
{
System.Web.Script.Serialization.JavaScriptSerializer JSSerializer = new
System.Web.Script.Serialization.JavaScriptSerializer();
List<Dictionary<string, object>> DtRows =
new List<Dictionary<string, object>>();
Dictionary<string, object> newrow = null;
//Code to loop each row in the datatable and add it to the dictionary object
foreach (DataRow drow in dt.Rows)
{
newrow = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
newrow.Add(col.ColumnName.Trim(), drow[col]);
}
DtRows.Add(newrow);
}
//Serialising the dictionary object to produce json output
JSSerializer.MaxJsonLength = Int32.MaxValue;
return JSSerializer.Serialize(DtRows);
}
// Write exception to text file
static void writeInFile(string excep)
{
// it will get base directory path but you can change it.
string path = AppDomain.CurrentDomain.BaseDirectory;
String dir = Path.GetDirectoryName(path);
dir += "\\Error\\";
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
string newFileName = string.Format("{0:dd-MMM-yyyy_hh-mm-ss-tt}" + ".txt", DateTime.Now);
string filepath = dir + newFileName;
if (!File.Exists(filepath))
{
File.Create(filepath).Close();
}
using (StreamWriter w = File.AppendText(filepath))
{
w.WriteLine("\r\nLog Entry : ");
w.WriteLine("{0}", DateTime.Now.ToString(CultureInfo.InvariantCulture));
string err = "Excepation :" + excep;
w.WriteLine(err);
w.WriteLine("__________________________");
w.Flush();
w.Close();
}
}
}
}
Output in JSON format
[
{
"Id": "1",
"Name": "Ram",
"Gender": "Male",
"Email": "abc@gmail.com",
},
{
"Id": "2",
"Name": "Shyam",
"Gender": "Male",
"Email": "abc@gmail.com",
},
{
"Id": "3",
"Name": "Kavita",
"Gender": "Female",
"Email": "abc@gmail.com",
},
{
"Id": "4",
"Name": "Suman",
"Gender": "Female",
"Email": "abc@gmail.com",
},
{
"Id": "5",
"Name": "Naveen",
"Gender": "Male",
"Email": "abc@gmail.com",
}
]
No comments:
Post a Comment