C# JSONHelper之Json转换方法大全


using System ;
using
System . Collections . Generic ;
using
System . Linq ;
using
System . Web ;
using
System . Web . Script . Serialization ;
using
System . Data ;

/// <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>
   
/// 数据表转键值对集合 www.2cto.com  
   
/// 把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 );
   
}
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM