欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp.net JSONHelper JSON帮助类

程序员文章站 2024-03-08 23:49:58
复制代码 代码如下:/************************************************** * 版权所有: mr_sheng * 文 件 名...
复制代码 代码如下:

/**************************************************
* 版权所有: 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 引入到自己的应用中.