Converting Data Table / Dataset Into JSON String
JSON (Java Script Object Notation), is a light weight, easily understandable to read and write string. It is also easily parse-able by machine.
JSON is introduced on two structues
A collection (key/value pair)
And ordered list of values.
I have not covered this topic in detail. Detailed analysis is stated on http://www.json.org/.
I am presenting a helper function (in C#) for developers for fast parsing on datatable / dataset into JSON String, and access it on client-side.
public static string GetJSONString(DataTable Dt){
string[] StrDc = new string[Dt.Columns.Count]; string HeadStr = string.Empty;for (int i = 0; i < Dt.Columns.Count; i++){
"\"" + StrDc[i] + "\" : \"" + StrDc[i] + i.ToString() + "¾" + "\",";StrDc[i] = Dt.Columns[i].Caption;
HeadStr +=
StringBuilder Sb = new StringBuilder();}
HeadStr = HeadStr.Substring(0, HeadStr.Length - 1);
Sb.Append(
"{\"" + Dt.TableName + "\" : [");for (int i = 0; i < Dt.Rows.Count; i++){
string TempStr = HeadStr;
Sb.Append(
"{");for (int j = 0; j < Dt.Columns.Count; j++){
"¾", Dt.Rows[i][j].ToString());TempStr = TempStr.Replace(Dt.Columns[j] + j.ToString() +
}
Sb.Append(TempStr + "},");new StringBuilder(Sb.ToString().Substring(0, Sb.ToString().Length - 1));}
Sb =
Sb.Append(
"]}");return Sb.ToString();}
Here, Dt is the datatable, and it returns JSON formatted string.
For detailed porcedure on how to access this string on client side, please refer to this link Exposing Webservices to Client-Side because I don't like to do task repetition.
Please donot forget to convert to JSON string to JSON Object using
var JObject = eval('(' + JSONString + ');');
in Javascript JObject have all characteristics of JSON object, through which you can Use JObject by iterrating or what so ever.
e.g., you can use your JObject as
for(var i = 0; i < JObject .Employees.length; i++){
var val1 = JObject.Employees[i].EmployeeID;
var val2 = JObject.Employees[i].NationalIDNumber;
var val3 = JObject.Employees[i].Title;
var val4 = JObject.Employees[i].BirthDate;
var val5 = JObject .Employees[i].HireDate ;
}
Please note that I am querieng data from AdventurWorksDB SQL Sample Database (Table: Employee).
I hope this article will be helpful for you.
Any Questions / Queries ??
Regards,
Naveed Akhtar