using System.Collections;
using System.Collections.Generic;
public static void Main()
DataTable dt = new DataTable();
var randomData = Enumerable.Range(0,2)
.Select(p=> new { A = (char)(new Random(Guid.NewGuid().GetHashCode()).Next(1,20)+p+65),
B = (char)(new Random(Guid.NewGuid().GetHashCode()).Next(1,20)+p+65),
C= (char)(new Random(Guid.NewGuid().GetHashCode()).Next(1,20)+p+65) } ).ToList();
var dataJson = Newtonsoft.Json.JsonConvert.SerializeObject(randomData);
Console.WriteLine(string.Format("Serialize From List<T> \t: {0}",dataJson));
dt.Rows.Add(o.A,o.B,o.C);
var dataJson2 = Newtonsoft.Json.JsonConvert.SerializeObject(dt);
Console.WriteLine(string.Format("Serialize From DataTable \t: {0}",dataJson2));
Console.WriteLine("".PadLeft(150,'='));
var tmpDt = Newtonsoft.Json.JsonConvert.DeserializeObject<DataTable>(dataJson);
Dictionary<string,string> DefineHeader = new Dictionary<string,string>();
DefineHeader.Add("A","中文欄位1");
DefineHeader.Add("B","中文欄位2");
DefineHeader.Add("C","中文欄位3");
foreach(DataColumn y in tmpDt.Columns.Cast<DataColumn>())
y.Caption = DefineHeader[y.ColumnName];
var newJson = Newtonsoft.Json.JsonConvert.SerializeObject(tmpDt);
Console.WriteLine( string.Format("DeserializeObject from List<T> to DataTable and SerialeObject to Json : \r\n{0}", newJson ));