C#实现将json转换为DataTable的方法

 更新时间:2015年03月10日 16:16:40   作者:MeGoodtoo  
这篇文章主要介绍了C#实现将json转换为DataTable的方法,涉及C#操作json及DataTable的技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C#实现将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.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;
}
#endregion

希望本文所述对大家的C#程序设计有所帮助。

相关文章

  • C# 设计模式系列教程-适配器模式

    C# 设计模式系列教程-适配器模式

    通过适配器,客户端可以调用同一接口,因而对客户端来说是透明的。这样做更简单、更直接、更紧凑。
    2016-06-06
  • C#实现Redis的分布式锁

    C#实现Redis的分布式锁

    我们在开发很多业务场景会使用到锁,例如库存控制,抽奖等。分布式与单机情况下最大的不同在于其不是多线程而是多进程。本文就来介绍一下,感兴趣的可以了解一下
    2021-08-08
  • C#中LINQ to DataSet操作及DataTable与LINQ相互转换

    C#中LINQ to DataSet操作及DataTable与LINQ相互转换

    这篇文章介绍了C#中LINQ to DataSet操作及DataTable与LINQ相互转换,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C#之泛型详解

    C#之泛型详解

    本文详细讲解了C#中的泛型,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C# 使用相同权限调用 cmd 传入命令的方法

    C# 使用相同权限调用 cmd 传入命令的方法

    本文告诉大家如何使用相同权限调用cmd并且传入命令,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-07-07
  • C# Winform消息通知系统托盘气泡提示框ToolTip控件

    C# Winform消息通知系统托盘气泡提示框ToolTip控件

    这篇文章主要为大家介绍了C#或Winform中的消息通知之系统托盘的气泡提示框窗口(系统toast通知)、ToolTip控件和ToolTipText属性详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 利用windows性能计数器进行服务器性能监控示例分享

    利用windows性能计数器进行服务器性能监控示例分享

    这篇文章主要介绍了利用windows性能计数器进行服务器性能监控的方法,大家可以参考扩展其它功能
    2014-01-01
  • 基于C#实现FTP下载文件

    基于C#实现FTP下载文件

    这篇文章主要为大家详细介绍了如何利用C#实现FTP下载文件,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • C#代码实现扑克牌排序的几种方式

    C#代码实现扑克牌排序的几种方式

    今天小编就为大家分享一篇关于C#代码实现扑克牌排序,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • 解析C#中#region与#if的作用

    解析C#中#region与#if的作用

    以下是对C#中#region与#if的作用进行了详细的介绍,需要的朋友可以过来参考下
    2013-09-09

最新评论