使用C#把Json转换成DataTable
Posted 学海无涯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用C#把Json转换成DataTable相关的知识,希望对你有一定的参考价值。
要将 JSON 转换为 DataTable,你可以使用 Newtonsoft.Json 库(也称为 Json.NET),它是一个流行的用于处理 JSON 数据的库。 以下是使用 C# 和 Newtonsoft.Json 将 JSON
首先,确保你已经安装了 Newtonsoft.Json 库。 你可以在 Visual Studio 中通过 NuGet
然后,使用以下代码将 JSON 转换为 DataTable:
using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Data; // JSON 字符串 string json = @"[ \'Id\': 1, \'Name\': \'John\', \'Age\': 30 , \'Id\': 2, \'Name\': \'Jane\', \'Age\': 25 , \'Id\': 3, \'Name\': \'Bob\', \'Age\': 40 ]"; // 将 JSON 字符串解析为 JArray 对象 JArray jsonArray = JArray.Parse(json); // 创建 DataTable DataTable dataTable = new DataTable(); // 添加列 foreach (JProperty property in jsonArray[0]) dataTable.Columns.Add(property.Name); // 添加行 foreach (JObject jsonObject in jsonArray) DataRow row = dataTable.NewRow(); foreach (JProperty property in jsonObject.Properties()) row[property.Name] = property.Value.ToString(); dataTable.Rows.Add(row); // 输出 DataTable foreach (DataRow row in dataTable.Rows) foreach (DataColumn column in dataTable.Columns) Console.WriteLine($"column.ColumnName: row[column]"); Console.WriteLine();
上述代码中,首先定义了一个包含 JSON 数据的字符串 json
。 然后,使用 JArray.Parse()
方法将 JSON 字符串解析为 JArray 对象。 接下来,创建一个空的 DataTable 对象dataTable
。
通过遍历 JArray 中的第一个对象的属性,将其作为列名添加到 DataTable 中。 然后,通过遍历 JArray 中的每个对象,创建新的 DataRow 并将值添加到相应的列中。 最后,将行添加到 DataTable 中。
最后,你可以遍历 DataTable 中的行和列,以查看转换后的数据。
请注意,上述示例中的 JSON 字符串只是一个简单的示例,你可以根据实际情况修改和调整代码以适应你的 JSON 结构和数据格式。
c#如何把Json转成DataTable每一行都一一对应下面多出来的列自动添加到后方
/// <summary>/// 将json转换为DataTable
/// </summary>
/// <param name="strJson">得到的json</param>
/// <returns></returns>
private DataTable JsonToDataTable(string strJson)
//转换json格式
strJson = strJson.Replace(",\\"", "*\\"").Replace("\\":", "\\"#").ToString();
//取出表名
var rg = new Regex(@"(?<=)[^:]+(?=:\\[)", RegexOptions.IgnoreCase);
string strName = rg.Match(strJson).Value;
DataTable tb = null;
//去除表名
strJson = strJson.Substring(strJson.IndexOf("[") + 1);
strJson = strJson.Substring(0, strJson.IndexOf("]"));
//获取数据
rg = new Regex(@"(?<=)[^]+(?=)");
MatchCollection mc = rg.Matches(strJson);
for (int i = 0; i < mc.Count; i++)
string strRow = mc[i].Value;
string[] strRows = strRow.Split('*');
//创建表
if (tb == null)
tb = new DataTable();
tb.TableName = strName;
foreach (string str in strRows)
var dc = new DataColumn();
string[] strCell = str.Split('#');
if (strCell[0].Substring(0, 1) == "\\"")
int a = strCell[0].Length;
dc.ColumnName = strCell[0].Substring(1, a - 2);
else
dc.ColumnName = strCell[0];
tb.Columns.Add(dc);
tb.AcceptChanges();
//增加内容
DataRow dr = tb.NewRow();
for (int r = 0; r < strRows.Length; r++)
dr[r] = strRows[r].Split('#')[1].Trim().Replace(",", ",").Replace(":", ":").Replace("\\"", "");
tb.Rows.Add(dr);
tb.AcceptChanges();
return tb;
这是json转tb的,还有后面那句什么意思?没看懂
以上是关于使用C#把Json转换成DataTable的主要内容,如果未能解决你的问题,请参考以下文章
pythonnet模块的使用,把DataTable转换成DataFrame
求问 C#如何将json字符串转为datatable 求详细解答
c#实现list,dataset,DataTable转换成josn等各种转换方法总和