将JSON转成DataSet(DataTable)

将JSON转成DataSet(DataTable)

方法1:

/// 
    /// 将JSON解析成DataSet只限标准的JSON数据
    /// 例如:Json={t1:[{name:'数据name',type:'数据type'}]} 
    /// 或 Json={t1:[{name:'数据name',type:'数据type'}],t2:[{id:'数据id',gx:'数据gx',val:'数据val'}]}
    /// 
    /// Json字符串
    /// DataSet
    public static DataSet JsonToDataSet(string Json)
    {
      try
      {
        DataSet ds = new DataSet();
        JavaScriptSerializer JSS = new JavaScriptSerializer();


        object obj = JSS.DeserializeObject(Json);
        Dictionary<string, object> datajson = (Dictionary<string, object>)obj;


        foreach (var item in datajson)
        {
          DataTable dt = new DataTable(item.Key);
          object[] rows = (object[])item.Value;
          foreach (var row in rows)
          {
            Dictionary<string, object> val = (Dictionary<string, object>)row;
            DataRow dr = dt.NewRow();
            foreach (KeyValuePair<string, object> sss in val)
            {
              if (!dt.Columns.Contains(sss.Key))
              {
                dt.Columns.Add(sss.Key.ToString());
                dr[sss.Key] = sss.Value;
              }
              else
                dr[sss.Key] = sss.Value;
            }
            dt.Rows.Add(dr);
          }
          ds.Tables.Add(dt);
        }
        return ds;
      }
      catch
      {
        return null;
      }
    }

方法2:

///    
    /// 根据Json返回DateTable,JSON数据格式如:   
    /// {table:[{column1:1,column2:2,column3:3},{column1:1,column2:2,column3:3}]}   
    /// items:{"2750884":{clicknum:"50",title:"鲍鱼",href:"/shop/E06B14B40110/dish/2750884#menu",desc:"
",src:"15f38721-49da-48f0-a283-8057c621b472.jpg",price:78.00,units:"",list:[],joiner:""}}
///
/// Json字符串 /// public static DataTable JsonToDataTable(string strJson) { //取出表名 //var rg = new Regex(@"(?<={)[^:]+(?=:\[)", RegexOptions.IgnoreCase); 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(@"(?<={)[^}]+(?=})"); rg = new Regex(@"(?<={)[^}]+(?=})"); System.Text.RegularExpressions.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(':'); 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("\"", ""); dr[r] = strRows[r]; } tb.Rows.Add(dr); tb.AcceptChanges(); } return tb; }

你可能感兴趣的:(asp-net,JSON,DataSet,DataTable)