//JsonStr为Json字符串JArray array = JsonConvert.DeserializeObject(JsonStr)as JArray;//反序列化为数组if(array.Count >0){StringBuilder columns =newStringBuilder();DataTable table =newDataTable();JObject objColumns = array[0]as JObject;//构造表头foreach(JToken jkon in objColumns.AsEnumerable<JToken>()){string name =((JProperty)(jkon)).Name;
columns.Append(name +",");
table.Columns.Add(name);}//向表中添加数据for(int i =0; i < array.Count; i++){DataRow row = table.NewRow();JObject obj = array[i]as JObject;foreach(JToken jkon in obj.AsEnumerable<JToken>()){string name =((JProperty)(jkon)).Name;stringvalue=((JProperty)(jkon)).Value.ToString();
row[name]=value;}
table.Rows.Add(row);}}
PrivateSub ConvertDataTable(ByVal jsonStr AsString)DimarrayAs JArray =TryCast(JsonConvert.DeserializeObject(jsonStr), JArray)Ifarray.Count >0ThenDim columns As StringBuilder =New StringBuilder()Dim table As DataTable =New DataTable()Dim objColumns As JObject =TryCast(array(0), JObject)For Each jkon As JToken In objColumns.AsJEnumerable
DimnameAsString=(CType((jkon), JProperty)).Name
columns.Append(name&",")
table.Columns.Add(name)NextFor i AsInteger=0Toarray.Count -1Dim row As DataRow = table.NewRow()Dim obj As JObject =TryCast(array(i), JObject)For Each jkon As JToken In obj.AsJEnumerable
DimnameAsString=(CType((jkon), JProperty)).NameDim value AsString=(CType((jkon), JProperty)).Value.ToString()
row(name)= value
Next
table.Rows.Add(row)NextEndIfEndSub