亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#中把Datatable轉換為Json的5個代碼實例

2020-01-24 02:41:55
字體:
來源:轉載
供稿:網友

實例一:

復制代碼 代碼如下:

/// <summary>    
    /// Datatable轉換為Json    
    /// </summary>   
    /// <param name="table">Datatable對象</param>    
    /// <returns>Json字符串</returns>    
    public static string ToJson(DataTable dt)
    {
        StringBuilder jsonString = new StringBuilder();
        jsonString.Append("[");
        DataRowCollection drc = dt.Rows;
        for (int i = 0; i < drc.Count; i++)
        {
            jsonString.Append("{");
            for (int j = 0; j < dt.Columns.Count; j++)
            {
                string strKey = dt.Columns[j].ColumnName;
                string strValue = drc[i][j].ToString();
                Type type = dt.Columns[j].DataType;
                jsonString.Append("/"" + strKey + "/":");
                strValue = StringFormat(strValue, type);
                if (j < dt.Columns.Count - 1)
                {
                    jsonString.Append(strValue + ",");
                }
                else
                {
                    jsonString.Append(strValue);
                }
            }
            jsonString.Append("},");
        }
        jsonString.Remove(jsonString.Length - 1, 1);
        jsonString.Append("]");
        return jsonString.ToString();
    }
    /// <summary>
    /// 格式化字符型、日期型、布爾型
    /// </summary>
    /// <param name="str"></param>
    /// <param name="type"></param>
    /// <returns></returns>
    private static string StringFormat(string str, Type type)
    {
        if (type == typeof(string))
        {
            str = String2Json(str);
            str = "/"" + str + "/"";
        }
        else if (type == typeof(DateTime))
        {
            str = "/"" + str + "/"";
        }
        else if (type == typeof(bool))
        {
            str = str.ToLower();
        }
        else if (type != typeof(string) && string.IsNullOrEmpty(str))
        {
            str = "/"" + str + "/"";
        }
        return str;
    }
    /// <summary>
    /// 過濾特殊字符
    /// </summary>
    /// <param name="s">字符串</param>
    /// <returns>json字符串</returns>
    private static string String2Json(String s)
    {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s.Length; i++)
        {
            char c = s.ToCharArray()[i];
            switch (c)
            {
                case '/"':
                    sb.Append("http:///""); break;
                case '//':
                    sb.Append("http:////"); break;
                case '/':
                    sb.Append("http:///"); break;
                case '/b':
                    sb.Append("http://b"); break;
                case '/f':
                    sb.Append("http://f"); break;
                case '/n':
                    sb.Append("http://n"); break;
                case '/r':
                    sb.Append("http://r"); break;
                case '/t':
                    sb.Append("http://t"); break;
                default:
                    sb.Append(c); break;
            }
        }
        return sb.ToString();
    }

   

 實例二:
 

復制代碼 代碼如下:

 public static string CreateJsonParameters(DataTable dt)
        {
            /**//**/
            /**//* /****************************************************************************
          * Without goingin to the depth of the functioning of this Method, i will try to give an overview
          * As soon as this method gets a DataTable it starts to convert it into JSON String,
          * it takes each row and in each row it grabs the cell name and its data.
          * This kind of JSON is very usefull when developer have to have Column name of the .
          * Values Can be Access on clien in this way. OBJ.HEAD[0].<ColumnName>
          * NOTE: One negative point. by this method user will not be able to call any cell by its index.
         * *************************************************************************/
            StringBuilder JsonString = new StringBuilder();
            //Exception Handling       
            if (dt != null && dt.Rows.Count > 0)
            {
                JsonString.Append("{ ");
                JsonString.Append("/"T_blog/":[ ");
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    JsonString.Append("{ ");
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        if (j < dt.Columns.Count - 1)
                        {
                            JsonString.Append("/"" + dt.Columns[j].ColumnName.ToString() + "/":" + "/"" + dt.Rows[i][j].ToString() + "/",");
                        }
                        else if (j == dt.Columns.Count - 1)
                        {
                            JsonString.Append("/"" + dt.Columns[j].ColumnName.ToString() + "/":" + "/"" + dt.Rows[i][j].ToString() + "/"");
                        }
                    }
                    /**//**/
                    /**//*end Of String*/
                    if (i == dt.Rows.Count - 1)
                    {
                        JsonString.Append("} ");
                    }
                    else
                    {
                        JsonString.Append("}, ");
                    }
                }
                JsonString.Append("]}");
                return JsonString.ToString();
            }
            else
            {
                return null;
            }
        }
 

效果:
{"T_blog":
  [
   {"id":"14","title":"北京奧運開幕式","addtime":"2008-08-08"},
   {"id":"15","title":"網絡文化","addtime":"2008-09-12"},
   {"id":"17","title":"北京下雨了","addtime":"2008-09-19"},
   {"id":"21","title":"深圳地鐵通了","addtime":"2008-09-25"}
  ]
}

實例三:

復制代碼 代碼如下:

/// <summary>
    /// 將一個數據表轉換成一個JSON字符串,在客戶端可以直接轉換成二維數組。
    /// </summary>
    /// <param name="source">需要轉換的表。</param>
    /// <returns></returns>
    public static string DataTableToJson(DataTable source)
    {
        if (source.Rows.Count == 0)
            return "";
        StringBuilder sb = new StringBuilder("[");
        foreach (DataRow row in source.Rows)
        {
            sb.Append("[");
            for (int i = 0; i < source.Columns.Count; i++)
            {
                sb.Append('"' + row[i].ToString() + "/",");
            }
            sb.Remove(sb.Length - 1, 1);
            sb.Append("],");
        }
        sb.Remove(sb.Length - 1, 1);
        sb.Append("]");
        return sb.ToString();
    }


    /// <summary>
    /// 反回JSON數據到前臺
    /// </summary>
    /// <param name="dt">數據表</param>
    /// <returns>JSON字符串</returns>
    public string CreateJsonParameters(DataTable dt)
    {
        StringBuilder JsonString = new StringBuilder();
        //Exception Handling       
        if (dt != null && dt.Rows.Count > 0)
        {
            JsonString.Append("{ ");
            JsonString.Append("/"TableInfo/":[ ");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                JsonString.Append("{ ");
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    if (j < dt.Columns.Count - 1)
                    {
                        JsonString.Append("/"" + dt.Columns[j].ColumnName.ToString() + "/":" + "/"" + dt.Rows[i][j].ToString() + "/",");
                    }
                    else if (j == dt.Columns.Count - 1)
                    {
                        JsonString.Append("/"" + dt.Columns[j].ColumnName.ToString() + "/":" + "/"" + dt.Rows[i][j].ToString() + "/"");
                    }
                }
                /**/
                /*end Of String*/
                if (i == dt.Rows.Count - 1)
                {
                    JsonString.Append("} ");
                }
                else
                {
                    JsonString.Append("}, ");
                }
            }
            JsonString.Append("]}");
            return JsonString.ToString();
        }
        else
        {
            return null;
        }
    }

實例四:

復制代碼 代碼如下:

public class DataTableConvertJson
    {

        #region dataTable轉換成Json格式
        /// <summary> 
        /// dataTable轉換成Json格式 
        /// </summary> 
        /// <param name="dt"></param> 
        /// <returns></returns> 
        public static string DataTable2Json(DataTable dt)
        {
            StringBuilder jsonBuilder = new StringBuilder();
            jsonBuilder.Append("{/"");
            jsonBuilder.Append(dt.TableName);
            jsonBuilder.Append("/":[");
            jsonBuilder.Append("[");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                jsonBuilder.Append("{");
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    jsonBuilder.Append("/"");
                    jsonBuilder.Append(dt.Columns[j].ColumnName);
                    jsonBuilder.Append("/":/"");
                    jsonBuilder.Append(dt.Rows[i][j].ToString());
                    jsonBuilder.Append("/",");
                }
                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                jsonBuilder.Append("},");
            }
            jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
            jsonBuilder.Append("]");
            jsonBuilder.Append("}");
            return jsonBuilder.ToString();
        }

        #endregion dataTable轉換成Json格式
        #region DataSet轉換成Json格式
        /// <summary> 
        /// DataSet轉換成Json格式 
        /// </summary> 
        /// <param name="ds">DataSet</param>
        /// <returns></returns> 
        public static string Dataset2Json(DataSet ds)
        {
            StringBuilder json = new StringBuilder();

            foreach (DataTable dt in ds.Tables)
            {
                json.Append("{/"");
                json.Append(dt.TableName);
                json.Append("/":");
                json.Append(DataTable2Json(dt));
                json.Append("}");
            } return json.ToString();
        }
        #endregion

        /// <summary>
        /// Msdn
        /// </summary>
        /// <param name="jsonName"></param>
        /// <param name="dt"></param>
        /// <returns></returns>
        public static string DataTableToJson(string jsonName, DataTable dt)
        {
            StringBuilder Json = new StringBuilder();
            Json.Append("{/"" + jsonName + "/":[");
            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Json.Append("{");
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        Json.Append("/"" + dt.Columns[j].ColumnName.ToString() + "/":/"" + dt.Rows[i][j].ToString() + "/"");
                        if (j < dt.Columns.Count - 1)
                        {
                            Json.Append(",");
                        }
                    }
                    Json.Append("}");
                    if (i < dt.Rows.Count - 1)
                    {
                        Json.Append(",");
                    }
                }
            }
            Json.Append("]}");
            return Json.ToString();
        }
    }

實例五:

復制代碼 代碼如下:

#region  DataTable 轉換為Json字符串實例方法
/// <summary>
/// GetClassTypeJosn 的摘要說明
/// </summary>
public class GetClassTypeJosn : IHttpHandler
{
    /// <summary>
    /// 文件名:DataTable 和Json 字符串互轉
    /// 版權所有:Copyright (C) Create Family Wealth liangjw
    /// 創建標示:2013-08-03
    /// </summary>
    //用法說明實例
     public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "application/json";
        context.Response.Charset = "utf-8";
        HttpRequest req = context.Request;
        string method = req["method"].ToStr().ToLower();


       //獲取合同明細列表  DataTable 轉換為Json字符串
        if (method == "txtdate")
        {
            string json = "";
            BO.MakeContractMx bll = new MakeContractMx();
            DataSet ds = bll.GetDataTable();
            if (ds.Tables.Count > 0)
            {
                json =ToJson(ds.Tables[0]);
            }
            context.Response.Write(json);
            return;
        }

    }

   public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

   #endregion

    #region Json字符串轉換為DataTable 實例方法

    public DataTable JsonToDataTable(json)
    {
       DataTable  dt= ToDataTable(json);
         return dt;
    }
   
   #endregion

    #region DataTable 轉換為Json 字符串
    /// <summary>
    /// DataTable 對象 轉換為Json 字符串
    /// </summary>
    /// <param name="dt"></param>
    /// <returns></returns>
    public static string ToJson(this DataTable dt)
    {
        JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
        javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大數值
        ArrayList arrayList = new ArrayList();
        foreach (DataRow dataRow in dt.Rows)
        {
            Dictionary<string, object> dictionary = new Dictionary<string, object>();  //實例化一個參數集合
            foreach (DataColumn dataColumn in dt.Columns)
            {
                dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToStr());
            }
            arrayList.Add(dictionary); //ArrayList集合中添加鍵值
        }

        return javaScriptSerializer.Serialize(arrayList);  //返回一個json字符串
    }
    #endregion

    #region Json 字符串 轉換為 DataTable數據集合
    /// <summary>
    /// Json 字符串 轉換為 DataTable數據集合
    /// </summary>
    /// <param name="json"></param>
    /// <returns></returns>
    public static DataTable ToDataTable(this string json)
    {
        DataTable dataTable = new DataTable();  //實例化
        DataTable result;
        try
        {
            JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
            javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大數值
            ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(json);
            if (arrayList.Count > 0)
            {
                foreach (Dictionary<string, object> dictionary in arrayList)
                {
                    if (dictionary.Keys.Count<string>() == 0)
                    {
                        result = dataTable;
                        return result;
                    }
                    if (dataTable.Columns.Count == 0)
                    {
                        foreach (string current in dictionary.Keys)
                        {
                            dataTable.Columns.Add(current, dictionary[current].GetType());
                        }
                    }
                    DataRow dataRow = dataTable.NewRow();
                    foreach (string current in dictionary.Keys)
                    {
                        dataRow[current] = dictionary[current];
                    }

                    dataTable.Rows.Add(dataRow); //循環添加行到DataTable中
                }
            }
        }
        catch
        {
        }
        result = dataTable;
        return result;
    }
    #endregion

    #region 轉換為string字符串類型
    /// <summary>
    ///  轉換為string字符串類型
    /// </summary>
    /// <param name="s">獲取需要轉換的值</param>
    /// <param name="format">需要格式化的位數</param>
    /// <returns>返回一個新的字符串</returns>
    public static string ToStr(this object s, string format = "")
    {
        string result = "";
        try
        {
            if (format == "")
            {
                result = s.ToString();
            }
            else
            {
                result = string.Format("{0:" + format + "}", s);
            }
        }
        catch
        {
        }
        return result;
    }
   #endregion

PS:關于json操作,這里再為大家推薦幾款比較實用的json在線工具供大家參考使用:

在線JSON代碼檢驗、檢驗、美化、格式化工具:
http://tools.VeVB.COm/code/json

JSON在線格式化工具:
http://tools.VeVB.COm/code/jsonformat

在線XML/JSON互相轉換工具:
http://tools.VeVB.COm/code/xmljson

json代碼在線格式化/美化/壓縮/編輯/轉換工具:
http://tools.VeVB.COm/code/jsoncodeformat

在線json壓縮/轉義工具:

http://tools.VeVB.COm/code/json_yasuo_trans

C語言風格/HTML/CSS/json代碼格式化美化工具:
http://tools.VeVB.COm/code/ccode_html_css_json

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧亚日韩视频| 国产精品电影久久久久电影网| 亚洲自拍中文字幕| 国产欧美韩国高清| 国产一区二区三区中文| 成人精品在线观看| 亚洲人成毛片在线播放| 97免费视频在线播放| 国产精品无码专区在线观看| 91在线色戒在线| 国产成+人+综合+亚洲欧洲| 久久久av亚洲男天堂| 欧美午夜视频一区二区| 亚洲精品一区久久久久久| 日韩最新在线视频| 久久精品成人一区二区三区| 久久久久久综合网天天| 日韩欧美在线观看| 亚洲欧美中文字幕| 91成人天堂久久成人| 欧美一区二区大胆人体摄影专业网站| 欧美精品久久一区二区| 色综合久久天天综线观看| 久久精品视频免费播放| 欧美日韩国产精品一区二区三区四区| 这里只有精品在线观看| 亚洲国产天堂久久综合| 91影视免费在线观看| 九九热这里只有精品免费看| 中文字幕亚洲综合久久| 成人免费大片黄在线播放| 一区二区三区天堂av| 欧美精品video| 中文国产成人精品久久一| 日本欧美黄网站| 日本三级久久久| 久久福利视频网| 国产精品国产三级国产aⅴ浪潮| 亚洲香蕉成人av网站在线观看| 亚洲综合日韩在线| 欧美日韩另类在线| 一区二区三区视频观看| 在线视频欧美性高潮| 亚洲一级黄色片| 欧美黑人国产人伦爽爽爽| 亚洲人成网在线播放| 国产精品啪视频| 亚洲自拍在线观看| 成人黄色片在线| 日韩高清电影免费观看完整版| 日韩中文在线中文网在线观看| 亚洲黄色免费三级| 91在线免费视频| 国模私拍一区二区三区| 综合久久五月天| 国产精品www| 亚洲自拍小视频| 国产精品国产亚洲伊人久久| 一区三区二区视频| 尤物九九久久国产精品的特点| 国产精品色午夜在线观看| 亚洲天堂成人在线视频| 国产精品欧美亚洲777777| 亚洲欧美中文日韩在线| 91久热免费在线视频| 国产欧美日韩综合精品| 中文字幕国产日韩| 欧美香蕉大胸在线视频观看| 欧美成人手机在线| 色综合色综合久久综合频道88| 国产狼人综合免费视频| 91av在线免费观看视频| 夜夜嗨av色一区二区不卡| 奇米影视亚洲狠狠色| 久久成年人视频| 亚洲高清免费观看高清完整版| 欧美孕妇毛茸茸xxxx| 欧美国产日韩一区二区在线观看| 国产精品69精品一区二区三区| 欧美高清视频一区二区| 亚洲精品国产品国语在线| 夜夜嗨av一区二区三区免费区| 亚洲18私人小影院| 一本色道久久88综合日韩精品| 国产99久久久欧美黑人| 岛国av一区二区在线在线观看| 91国产高清在线| 亚洲黄色成人网| 亚洲精品久久久久久久久久久久久| 久久久久在线观看| 久久久这里只有精品视频| 国产精品黄页免费高清在线观看| 国产精品第2页| 中文字幕国内精品| 久久久97精品| 欧美高清视频在线播放| 国产精品久久久久999| 亚洲精品久久久久国产| 成人国产精品免费视频| 欧美激情精品久久久久久免费印度| 久久91亚洲精品中文字幕| 国产z一区二区三区| 国产欧美一区二区白浆黑人| 国产精品99久久久久久久久| 亚洲精品国产精品自产a区红杏吧| 国内偷自视频区视频综合| 成人免费看吃奶视频网站| 7777免费精品视频| 欧美午夜www高清视频| 日韩国产精品视频| 久久青草福利网站| 少妇激情综合网| 欧美黄色免费网站| 欧美黄色成人网| 国产精品视频久久久| 国产精品第10页| 日本精品一区二区三区在线播放视频| www高清在线视频日韩欧美| 欧美超级免费视 在线| 欧美性生交xxxxxdddd| 中文字幕日韩欧美精品在线观看| 国产精品久久av| 欧美日本啪啪无遮挡网站| 欧美特级www| 日韩在线观看免费网站| 亚洲电影天堂av| 日本久久亚洲电影| 欧美性受xxx| 成人黄色生活片| 久久偷看各类女兵18女厕嘘嘘| 中文字幕日韩综合av| 亚洲人成电影网站色xx| 成人黄色在线免费| 欧美色道久久88综合亚洲精品| 亚洲人成网站777色婷婷| 91精品国产色综合久久不卡98口| 黄色成人在线免费| 久久久女女女女999久久| 国产成人啪精品视频免费网| 中文字幕综合一区| 日韩精品免费在线播放| 久久伊人精品一区二区三区| 亚洲自拍小视频| 一本大道香蕉久在线播放29| 欧美激情精品在线| 国产精品国产亚洲伊人久久| 国产精品精品一区二区三区午夜版| 久久大大胆人体| 亚洲人成网在线播放| 91成人天堂久久成人| 欧美日韩在线影院| 久久影视三级福利片| 国产在线观看不卡| 98午夜经典影视| 欧洲午夜精品久久久| 久久久这里只有精品视频| 成人免费网视频| 久久久免费在线观看| 欧美xxxwww| 亚洲免费小视频| 日韩美女在线观看| 亚洲一区www| 在线观看欧美www| 88国产精品欧美一区二区三区|