/* 作者: 季健国
* 创建时间: 2012/6/9 23:10:11
*
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Script.Serialization;
using Newtonsoft.Json;
using System.Xml;
using System.Runtime.Serialization.Json;
using System.IO;
using System.Data;
using System.Collections;
namespace Ant.Service.Common
{
///
/// 提供了一个关于json的辅助类
///
public class JsonHelper
{
#region DataTable<-->JSON
///
/// DataTable转为json
///
/// DataTable
/// json数据
public static string DataTableToJson(DataTable dt)
{
List> list = new List>();
foreach (DataRow dr in dt.Rows)
{
Dictionary result = new Dictionary();
foreach (DataColumn dc in dt.Columns)
{
result.Add(dc.ColumnName, dr[dc]);
}
list.Add(result);
}
return SerializeToJson(list);
}
///
/// 序列化对象为Json字符串
///
/// 要序列化的对象
/// 序列化对象的深度,默认为100
/// Json字符串
public static string SerializeToJson(object obj, int recursionLimit = 100)
{
try
{
JavaScriptSerializer serialize = new JavaScriptSerializer();
serialize.RecursionLimit = recursionLimit;
return serialize.Serialize(obj);
}
catch { return ""; }
}
///
/// json包转DataTable
///
///
///
public static DataTable JsonToDataTable(string jsons)
{
DataTable dt = new DataTable();
try
{
JavaScriptSerializer serialize = new JavaScriptSerializer();
serialize.MaxJsonLength = Int32.MaxValue;
ArrayList list = serialize.Deserialize(jsons);
if (list.Count > 0)
{
foreach (Dictionary item in list)
{
if (item.Keys.Count == 0)//无值返回空
{
return dt;
}
if (dt.Columns.Count == 0)//初始Columns
{
foreach (string current in item.Keys)
{
dt.Columns.Add(current, item[current].GetType());
}
}
DataRow dr = dt.NewRow();
foreach (string current in item.Keys)
{
dr[current] = item[current];
}
dt.Rows.Add(dr);
}
}
}
catch
{
return dt;
}
return dt;
}
#endregion
#region Method
///
/// 类对像转换成json格式
///
///
public static string ToJson(object t)
{
return JsonConvert.SerializeObject(t, Newtonsoft.Json.Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include });
}
///
/// 类对像转换成json格式
///
///
/// 是否忽略NULL值
///
public static string ToJson(object t, bool HasNullIgnore)
{
if (HasNullIgnore)
return JsonConvert.SerializeObject(t, Newtonsoft.Json.Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
else
return ToJson(t);
}
///
/// json格式转换
///
///
///
///
public static T FromJson(string strJson) where T : class
{
if (!strJson.IsNullOrEmpty())
return JsonConvert.DeserializeObject(strJson);
return null;
}
///
/// 功能描述:将List转换为Json
/// 创建标识:szj
///
///
///
public static string ListToJson(IList