将json转换为DataTable

  #region 将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.LastIndexOf("]"));
            //获取数据  
            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;
        }
        #endregion
### 回答1: 可以使用Json.NET库将C#中的JSON字符串转换DataTable。 具体步骤如下: 1. 引入Json.NET库,可以通过NuGet包管理器进行安装。 2. 使用JsonConvert.DeserializeObject方法将JSON字符串转换为JArray对象。 3. 创建DataTable对象,并添加列。 4. 遍历JArray对象,将每个JSON对象转换为DataRow,并添加到DataTable中。 示例代码如下: ``` using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Data; string json = "{'data':[{'id':1,'name':'John'},{'id':2,'name':'Mary'}]}"; JObject obj = JObject.Parse(json); JArray array = (JArray)obj["data"]; DataTable dt = new DataTable(); dt.Columns.Add("id", typeof(int)); dt.Columns.Add("name", typeof(string)); foreach (JObject item in array) { DataRow row = dt.NewRow(); row["id"] = item["id"].Value<int>(); row["name"] = item["name"].Value<string>(); dt.Rows.Add(row); } ``` 以上代码将JSON字符串中的data数组转换DataTable对象,包含id和name两列。 ### 回答2: 很抱歉,因为没有上下文信息,无法理解“c”所代表的问题或主题,无法提供符合要求的回答。建议提出问题时应尽量清晰明确,以便回答者提供有效的回答。 ### 回答3: C是计算机科学和技术的重要编程语言之一,也被广泛应用于其它领域,如数学、统计、金融、科学等。C语言因其跨平台性、高效性和灵活性而备受青睐,成为初学者和专业开发者的首选编程语言。 C语言的优点之一是跨平台性。C语言是一种跨平台的编程语言,可以在不同的操作系统和计算机架构下运行。这使得开发者能够轻松跨越多个平台,减少了开发的难度和复杂性。 C语言的另一个优点是高效性。C语言是一种快速、高效的编程语言,由于其底层语言特征,C语言可以直接操作计算机的硬件资源,如内存、处理器、输入输出设备等。这使得C语言可以编写高效性能的程序,特别适合开发那些对性能要求较高的应用程序。 C语言还具有灵活性。C语言支持指针和动态内存分配等高级特性,这些特性使得程序员可以更容易地在C语言程序中管理内存和实现复杂的数据结构。此外,C语言还可以轻松地与其他语言进行集成,如C++,Python等,以扩展其功能和灵活性。 总之,C语言是一种非常有用的编程语言,它拥有跨平台性、高效性和灵活性等一系列优点,特别适合于开发高性能、低级别的系统程序。即使在现代编程语言如Python、Java、Swift等的时代,C语言仍然被广泛应用于计算机科学和技术领域,并且仍然是开发者的首选编程语言之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你的美,让我痴迷

你的好,我会永远记住你的。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值