1. 程式人生 > >DataTable 和Json 字串互轉(轉)

DataTable 和Json 字串互轉(轉)

#region  DataTable 轉換為Json字串例項方法
/// <summary>
/// GetClassTypeJosn 的摘要說明
/// </summary>
public class GetClassTypeJosn : IHttpHandler
{
    /// <summary>
    /// 檔名:DataTable 和Json 字串互轉/// </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

 

 

轉自:https://www.cnblogs.com/fjptwwf/p/5764176.html