Datatable轉成Json方式兩則


1,

Asp.net C# 使用Newtonsoft.Json 實現DataTable轉Json格式數據

1.這里下載:http://www.newtonsoft.com/products/json/ 
安裝: 
   1.解壓下載文件,得到Newtonsoft.Json.dll 
   2.在項目中添加引用 
2.引入命名空間 
C#代碼  
  1. using Newtonsoft.Json;  
  2. using Newtonsoft.Json.Converters;  

3.把datatable轉換成json格式 
C#代碼  
  1. public string GetAllCategory()  
  2. {       
  3.     string result = "";  
  4.     DataTable dt= catDAO.GetAllCategory();  
  5.     result=JsonConvert.SerializeObject(dt, new DataTableConverter());  
  6.     return result;  
  7.     }  


其他序列化和反序列化,請自行參考文檔資料
2,/*==============================================================================
*
* Filename: DatatableToJson.cs
* Description: 主要包含兩個方法:
   1. 獲取的DataTable 對象 轉換為Json 字符串
   2. Json 字符串 轉換為 DataTable數據集合
* Version: 1.0
* Created: 2012.08.23
* Author: liangjw
* E-mail : liangjw0504@163.com
* Q   Q   : 592568532
* Profile Url:http://90ideas.net/
* Company: Copyright (C) Create Family Wealth Power By Peter
*
==============================================================================*/
 * 備注信息: 上傳部分自己總結的常用方法的封裝,有不足和不完美之處,希望大家指出來,願意一起
 * 主要研究erp,cms,crm,b2b,oa等系統和網站的開發,歡迎有共同追求和學的IT人員一起學習和交流。
 * 學習和討論有關asp.net  mvc ,Ajax ,jquery ,html/css, xml ,sqlserver ,wpf,IIS以及服務器的搭建和安全性相關技術的交流和學習。
#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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM