C#無需第三方插件實現json和table互轉

分類:編程 時間:2016-11-07
[摘要:C# 數據庫查詢效果table轉化為json字符串,或反背把json字符串轉換為DataTable數據調集 以下代碼經理論簡略可用。轉換通用類界說:using system; using System.Collections.G]

C# 數據庫查詢結果table轉化為json字符串,或反向把json字符串轉換為DataTable數據集合 以下代碼經實踐簡單可用。


轉換通用類定義:

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Script.Serialization;
using System.Data;
using System.Reflection;

namespace testcsoft
{

    public static class jsonObject
     {
     #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].ToString());
            }
            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
     
     }

}


使用方法:

DataTable -->  json :

string  json = jsonObject.ToJson(ds.Tables[0]);     

 // 其中  ds.Tables[0]  是數據庫查詢的表


  json -->  DataTable :

DataTable dt = jsonObject.ToDataTable(json);


這是測試從數據庫獲取數據並table和json互轉結果



Tags: dictionary 數據庫查詢 returns public 第三方

文章來源:


ads
ads

相關文章
ads

相關文章

ad