You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
3.8 KiB
117 lines
3.8 KiB
3 months ago
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Linq;
|
||
|
using System.Web;
|
||
|
using System.Web.Script.Serialization;
|
||
|
using System.Data;
|
||
|
|
||
|
namespace MESWebSite.CommonClass
|
||
|
{
|
||
|
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>
|
||
|
/// 数据表转键值对集合
|
||
|
/// </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);
|
||
|
}
|
||
|
}
|
||
|
}
|