asp.net JSONHelper JSON幫助類
/**************************************************
* 版權(quán)所有: Mr_Sheng
* 文 件 名: JSONHelper.cs
* 文件描述:
* 類型說明: JSONHelper JSON幫助類
* 授權(quán)聲明:
* 本程序?yàn)樽杂绍浖?
* 您可依據(jù)自由軟件基金會(huì)所發(fā)表的GPL v3授權(quán)條款,對(duì)本程序再次發(fā)布和/或修改;
* 本程序是基于使用目的而加以發(fā)布,然而不負(fù)任何擔(dān)保責(zé)任;
* 亦無對(duì)適售性或特定目的適用性所為的默示性擔(dān)保。
* 詳情請(qǐng)參照GNU通用公共授權(quán) 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>
/// 對(duì)象轉(zhuǎn)JSON
/// </summary>
/// <param name="obj">對(duì)象</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>
/// 數(shù)據(jù)表轉(zhuǎn)鍵值對(duì)集合
/// 把DataTable轉(zhuǎn)成 List集合, 存每一行
/// 集合中放的是鍵值對(duì)字典,存每一列
/// </summary>
/// <param name="dt">數(shù)據(jù)表</param>
/// <returns>哈希表數(shù)組</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>
/// 數(shù)據(jù)集轉(zhuǎn)鍵值對(duì)數(shù)組字典
/// </summary>
/// <param name="dataSet">數(shù)據(jù)集</param>
/// <returns>鍵值對(duì)數(shù)組字典</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>
/// 數(shù)據(jù)表轉(zhuǎn)JSON
/// </summary>
/// <param name="dataTable">數(shù)據(jù)表</param>
/// <returns>JSON字符串</returns>
public static string DataTableToJSON(DataTable dt)
{
return ObjectToJSON(DataTableToList(dt));
}
/// <summary>
/// JSON文本轉(zhuǎn)對(duì)象,泛型方法
/// </summary>
/// <typeparam name="T">類型</typeparam>
/// <param name="jsonText">JSON文本</param>
/// <returns>指定類型的對(duì)象</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文本轉(zhuǎn)換為數(shù)據(jù)表數(shù)據(jù)
/// </summary>
/// <param name="jsonText">JSON文本</param>
/// <returns>數(shù)據(jù)表字典</returns>
public static Dictionary<string, List<Dictionary<string, object>>> TablesDataFromJSON(string jsonText)
{
return JSONToObject<Dictionary<string, List<Dictionary<string, object>>>>(jsonText);
}
/// <summary>
/// 將JSON文本轉(zhuǎn)換成數(shù)據(jù)行
/// </summary>
/// <param name="jsonText">JSON文本</param>
/// <returns>數(shù)據(jù)行的字典</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 引入到自己的應(yīng)用中.
- 使用jQuery向asp.net Mvc傳遞復(fù)雜json數(shù)據(jù)-ModelBinder篇
- 使用ASP.NET一般處理程序或WebService返回JSON的實(shí)現(xiàn)代碼
- asp.net(C#)解析Json的類代碼
- Jquery 組合form元素為json格式,asp.net反序列化
- asp.net 2.0里也可以用JSON的使用方法
- asp.net+jquery Jsonp使用方法
- jQuery asp.net 用json格式返回自定義對(duì)象
- Jquery中g(shù)etJSON在asp.net中的使用說明
- asp.net中各種類型的JSON格式化
- ASP.NET自帶對(duì)象JSON字符串與實(shí)體類的轉(zhuǎn)換
相關(guān)文章
.Net使用RabbitMQ實(shí)現(xiàn)短信密碼重置的操作步驟
在C#開發(fā)中,通過RabbitMQ實(shí)現(xiàn)短信服務(wù)可增強(qiáng)應(yīng)用的消息通知能力,本文介紹了使用RabbitMQ發(fā)送短信的步驟,包括安裝RabbitMQ客戶端庫(kù)、創(chuàng)建連接和通道、實(shí)現(xiàn)短信發(fā)送服務(wù)、配置RabbitMQ消費(fèi)者,并集成到用戶密碼重置流程中,通過示例代碼,可以快速理解整個(gè)實(shí)現(xiàn)過程2024-09-09
Asp.net的GridView控件實(shí)現(xiàn)單元格可編輯方便用戶使用
考慮到用戶使用方便,減少?gòu)棾鲰撁?,采用點(diǎn)“編輯”按鈕無需彈出頁面直接當(dāng)前行的單元格內(nèi)容就能編輯,思路及代碼如下,有此需求的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08
ASP.NET 文件斷點(diǎn)續(xù)傳實(shí)現(xiàn)代碼
在文件下載的時(shí)候,使用斷點(diǎn)續(xù)傳可以將上次未下載完成的文件繼續(xù)下載,該功能在開發(fā)文件下載的時(shí)候非常重要。這里我將介紹一種比較簡(jiǎn)單的斷點(diǎn)續(xù)傳功能的實(shí)現(xiàn)方法,僅供初學(xué)者參考使用2012-06-06
asp.net 站點(diǎn)URLRewrite使用小記
asp.net的底層運(yùn)作已經(jīng)也亂談過一番, 今天記一下URLRewrite的方法。2009-11-11
詳解.NET中使用Redis數(shù)據(jù)庫(kù)
Redis是一個(gè)用的比較廣泛的Key/Value的內(nèi)存數(shù)據(jù)庫(kù),這篇文章主要介紹了詳解.NET中使用Redis數(shù)據(jù)庫(kù),有興趣的可以了解一下。2016-12-12
Ajax Control Toolkit BalloonPopup的使用實(shí)例及效果
Ajax Control Toolkit 工具包的簡(jiǎn)介及獲取方式等,BalloonPopup 控件可以顯示一個(gè)彈出層,里面可以包含很多內(nèi)容。2013-02-02
ASP.NET中各種連接數(shù)據(jù)庫(kù)的配置的方法及json數(shù)據(jù)轉(zhuǎn)換
本篇文章主要介紹了ASP.NET中各種連接數(shù)據(jù)庫(kù)的配置的方法,詳細(xì)的介紹了MSSQL、Access、Oracle、SQLite、MySQL數(shù)據(jù)庫(kù)配置,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-01-01
Global.asax的Application_Error實(shí)現(xiàn)錯(cuò)誤記錄/錯(cuò)誤日志的代碼
本文為大家介紹下利用Global.asax的Application_Error實(shí)現(xiàn)錯(cuò)誤記錄,具體如下,有此需求的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08
asp.net String.IsNullOrEmpty 方法
2009-04-04

