DataTable table = new DataTable(); string jsonArrayText = "[{'a':'a1','b':'b1'},{'a':'a2','b':'b2'}]"; private void button1_Click(object sender, EventArgs e) { //Deserialize to array JArray array = JsonConvert.DeserializeObject(jsonArrayText) as JArray; if (array.Count > 0) { StringBuilder columns = new StringBuilder(); JObject objColumns = array[0] as JObject; //Structure header foreach (JToken jkon in objColumns.AsEnumerable()) { string name = ((JProperty)(jkon)).Name; columns.Append(name + ","); table.Columns.Add(name); } //Add data to the table for (int i = 0; i < array.Count; i++) { DataRow row = table.NewRow(); JObject obj = array[i] as JObject; foreach (JToken jkon in obj.AsEnumerable()) { string name = ((JProperty)(jkon)).Name; string value = ((JProperty)(jkon)).Value.ToString(); row[name] = value; } table.Rows.Add(row); } } }