使用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的,还有后面那句什么意思?没看懂

参考技术A 不清楚

以上是关于使用C#把Json转换成DataTable的主要内容,如果未能解决你的问题,请参考以下文章

C#将datatable的某一列转换成json格式的字符串

pythonnet模块的使用,把DataTable转换成DataFrame

求问 C#如何将json字符串转为datatable 求详细解答

c#实现list,dataset,DataTable转换成josn等各种转换方法总和

c#实现list,dataset,DataTable转换成josn等各种转换方法总和

asp.net中怎样把字符串转换成json