JSONHelper

 

JSONHelper
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<stringobject>> DataTableToList(DataTable dt)
        {
            List
<Dictionary<stringobject>> list
                 
= new List<Dictionary<stringobject>>();

            
foreach (DataRow dr in dt.Rows)
            {
                Dictionary
<stringobject> dic = new Dictionary<stringobject>();
                
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<stringobject>>> DataSetToDic(DataSet ds)
        {
            Dictionary
<string, List<Dictionary<stringobject>>> result = new Dictionary<string, List<Dictionary<stringobject>>>();

            
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<stringobject>>> TablesDataFromJSON(string jsonText)
        {
            
return JSONToObject<Dictionary<string, List<Dictionary<stringobject>>>>(jsonText);
        }

        
/// <summary>
        
/// 将JSON文本转换成数据行
        
/// </summary>
        
/// <param name="jsonText">JSON文本</param>
        
/// <returns>数据行的字典</returns>
        public static Dictionary<stringobject> DataRowFromJSON(string jsonText)
        {
            
return JSONToObject<Dictionary<stringobject>>(jsonText);
        }
    }
}

 

 

System.Web.Script.Serialization命名空间是.Net 3.5新添加的.

如果要在3.5以下版本中使用,可以下载3.5中的System.Web.Extensions.dll 引入到自己的应用中.

 

 

posted @ 2010-01-07 12:42  Mr_Sheng  阅读(2639)  评论(4编辑  收藏  举报