原文地址:https://ken.io/note/csharp-asp.net-jsonhelper

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Script.Serialization;
using System.Data; namespace Utils
{
/// <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);
}
}
}

最新文章

  1. [LeetCode] Largest Divisible Subset 最大可整除的子集合
  2. [Aaronyang] 写给自己的WPF4.5 笔记[2依赖属性]
  3. jQuery each,避免使用js for循环
  4. Passbook教程中生成pass时遇到的“Couldn&#39;t find a passTypeIdentifier in the pass”
  5. centos &quot;cannot open display&quot;的问题
  6. RHEL7磁盘分区挂载和格式化
  7. PHP学习系列(1)——字符串处理函数(3)
  8. javascript事件委托机制详解
  9. 2.CLI标准
  10. requests库使用
  11. Linux各目录及每个目录的详细介绍
  12. Tensorflow name_scope
  13. java 解耦
  14. Runtime之实例总结
  15. (笔记)Linux内核学习(一)之内核介绍
  16. python如何去掉字符串‘\xa0’
  17. Oracle初级性能优化总结
  18. 判断小米 魅族 华为 系统 MIUI EMUI FLYME
  19. A. Counterexample (Codeforces Round #275(div2)
  20. linux内存管理---物理地址、线性地址、虚拟地址、逻辑地址之间的转换

热门文章

  1. asp.net使用wsdl文件调用接口,以及调用SSL接口报错“根据验证过程 远程证书无效”的处理
  2. quartus 9.0 对话框显示不完整
  3. EditPlus等编辑器选中列(块)的方法
  4. 路飞-Redis
  5. 整合SSM2
  6. MySQL5.7的参数优化
  7. C语言编译和链接详解(通俗易懂,深入本质)
  8. ES6常用语法,面试应急专用!
  9. Linux中内容查看命令&quot;大PK&quot;
  10. vue $router.push 传参的问题