Public class datatabletojson
{
/// <Summary>
/// Convert datatable to JSON format for JavaScript to accept
/// </Summary>
/// <Param name = "DT"> datatable object </param>
/// <Returns> string </returns>
Public String getjsondata (datatable DT)
{
If (DT! = NULL)
{
Stringbuilder html = new stringbuilder ();
Html. append ("[");
For (INT I = 0; I <DT. Rows. Count; I ++)
{
Html. append ("{");
For (Int J = 0; j <DT. Columns. Count; j ++)
{
Html. append ("\" "+ dt. Columns [J]. columnname + "\"");
Html. append (":");
Html. append ("\" "+ string2json (Dt. Rows [I] [J]. tostring () + "\"");
Html. append (",");
}
Html. Remove (html. Length-1, 1 );
Html. append ("},");
}
Html. Remove (html. Length-1, 1 );
Html. append ("]");
Return html. tostring ();
}
Else
{
Return "";
}
}
/// <Summary>
/// Convert a string to a JSON object
/// </Summary>
/// <Param name = "S"> string </param>
/// <Returns> string </returns>
Private string string2json (string S)
{
Stringbuilder sb = new stringbuilder (S. Length + 20 );
// String char array
Char [] chararray = S. tochararray ();
For (INT I = 0; I <chararray. length; I ++)
{
Char c = chararray [I];
Switch (c)
{
Case '\"':
SB. append ("\\\"");
Break;
Case '\\':
SB. append ("\\\\");
Break;
Case '/':
SB. append ("\\/");
Break;
Case '\ B ':
SB. append ("\ B ");
Break;
Case '\ F ':
SB. append ("\ f ");
Break;
Case '\ N ':
SB. append ("\ n ");
Break;
Case '\ R ':
SB. append ("\ r ");
Break;
Case '\ t ':
SB. append ("\ t ");
Break;
Default:
SB. append (C );
Break;
}
}
Return sb. tostring ();
}
}