- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Text;
- namespace NC.Common
- {/// <summary>
- /// JSON 帮助类
- /// </summary>
- public class JsonHelper
- {
- /// <summary>
- /// 对象转 JSON
- /// </summary>
- /// <param name="obj"> 对象 </param>
- /// <returns>JSON 格式的字符串 </returns>
- public static string ObjectToJSON(object obj)
- {
- try
- {
- byte[] b = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(obj));
- return Encoding.UTF8.GetString(b);
- }
- 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 JsonConvert.DeserializeObject < T > (jsonText);
- //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);
- }
- }
- }
来源: https://www.cnblogs.com/oorz/p/8805073.html