asp.net JSONHelper JSON協助類

來源:互聯網
上載者:User

複製代碼 代碼如下:/**************************************************
* 著作權: Mr_Sheng
* 文 件 名: JSONHelper.cs
* 檔案描述:
* 類型說明: JSONHelper JSON協助類
* 授權聲明:
* 本程式為自由軟體;
* 您可依據自由軟體基金會所發表的GPL v3授權條款,對本程式再次發布和/或修改;
* 本程式是基於使用目的而加以發布,然而不負任何擔保責任;
* 亦無對適售性或特定目的適用性所為的默示性擔保。
* 詳情請參照GNU通用公用授權 v3(參見license.txt檔案)。
* 版本曆史:
* v2.0.0 Mr_Sheng 2009-09-09 修改
***************************************************/
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Script.Serialization;
using System.Data;
namespace Sheng.Common
{
/// <summary>
/// JSON協助類
/// </summary>
public class JSONHelper
{
/// <summary>
/// 對象轉JSON
/// </summary>
/// <param name="obj">對象</param>
/// <returns>JSON格式的字串</returns>
public static string ObjectToJSON(object obj)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
try
{
return jss.Serialize(obj);
}
catch (Exception ex)
{
throw new Exception("JSONHelper.ObjectToJSON(): " + ex.Message);
}
}
/// <summary>
/// 資料錶轉索引值對集合
/// 把DataTable轉成 List集合, 存每一行
/// 集合中放的是索引值對字典,存每一列
/// </summary>
/// <param name="dt">資料表</param>
/// <returns>雜湊表數組</returns>
public static List<Dictionary<string, object>> DataTableToList(DataTable dt)
{
List<Dictionary<string, object>> list
= new List<Dictionary<string, object>>();
foreach (DataRow dr in dt.Rows)
{
Dictionary<string, object> dic = new Dictionary<string, object>();
foreach (DataColumn dc in dt.Columns)
{
dic.Add(dc.ColumnName, dr[dc.ColumnName]);
}
list.Add(dic);
}
return list;
}
/// <summary>
/// 資料集轉索引值對數組字典
/// </summary>
/// <param name="dataSet">資料集</param>
/// <returns>索引值對數組字典</returns>
public static Dictionary<string, List<Dictionary<string, object>>> DataSetToDic(DataSet ds)
{
Dictionary<string, List<Dictionary<string, object>>> result = new Dictionary<string, List<Dictionary<string, object>>>();
foreach (DataTable dt in ds.Tables)
result.Add(dt.TableName, DataTableToList(dt));
return result;
}
/// <summary>
/// 資料錶轉JSON
/// </summary>
/// <param name="dataTable">資料表</param>
/// <returns>JSON字串</returns>
public static string DataTableToJSON(DataTable dt)
{
return ObjectToJSON(DataTableToList(dt));
}
/// <summary>
/// JSON文本轉對象,泛型方法
/// </summary>
/// <typeparam name="T">類型</typeparam>
/// <param name="jsonText">JSON文本</param>
/// <returns>指定類型的對象</returns>
public static T JSONToObject<T>(string jsonText)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
try
{
return jss.Deserialize<T>(jsonText);
}
catch (Exception ex)
{
throw new Exception("JSONHelper.JSONToObject(): " + ex.Message);
}
}
/// <summary>
/// 將JSON文本轉換為資料表資料
/// </summary>
/// <param name="jsonText">JSON文本</param>
/// <returns>資料表字典</returns>
public static Dictionary<string, List<Dictionary<string, object>>> TablesDataFromJSON(string jsonText)
{
return JSONToObject<Dictionary<string, List<Dictionary<string, object>>>>(jsonText);
}
/// <summary>
/// 將JSON文本轉換成資料行
/// </summary>
/// <param name="jsonText">JSON文本</param>
/// <returns>資料行的字典</returns>
public static Dictionary<string, object> DataRowFromJSON(string jsonText)
{
return JSONToObject<Dictionary<string, object>>(jsonText);
}
}
}

System.Web.Script.Serialization命名空間是.Net 3.5新添加的.
如果要在3.5以下版本中使用,可以下載3.5中的System.Web.Extensions.dll 引入到自己的應用中.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.