using System.Collections.Generic;
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Data;
using System.Reflection;
using System;
namespace Txgy.EWS.Client.Common.Helpers
{
///
/// Json帮助类
/// 使用前需引用开源项目类库:Newtonsoft.Json.dll
///
public class JsonHelper
{
///
/// 将对象序列化为json格式
///
/// 序列化对象
/// json字符串
public static string SerializeObjct(object obj)
{
return JsonConvert.SerializeObject(obj);
}
///
/// 解析JSON字符串生成对象实体
///
/// 实体类
/// JSON字符串
///
public static T JsonConvertObject(string json)
{
return JsonConvert.DeserializeObject(json);
}
///
/// 解析JSON字符串生成对象实体
///
/// 对象类型
/// json字符串
///
public static T DeserializeJsonToObject(string json) where T : class
{
JsonSerializer serializer = new JsonSerializer();
StringReader sr = new StringReader(json);
object obj = serializer.Deserialize(new JsonTextReader(sr), typeof(T));
T t = obj as T;
return t;
}
///
/// 解析JSON数组生成对象实体集合
///
/// 对象类型
/// json数组
/// 对象实体集合
public static List DeserializeJsonToList(string json) where T : class
{
JsonSerializer serializer = new JsonSerializer();
StringReader sr = new StringReader(json);
object obj = serializer.Deserialize(new JsonTextReader(sr), typeof(List));
List list = obj as List;
return list;
}
///
/// 将JSON转数组
/// 用法:jsonArr[0]["xxxx"]
///
/// json字符串
///
public static JArray GetToJsonList(string json)
{
JArray jsonArr = (JArray)JsonConvert.DeserializeObject(json);
return jsonArr;
}
///
/// 将DataTable转换成实体类
///
/// 实体类
/// DataTable
///
public static List DtConvertToModel(DataTable dt) where T : new()
{
List ts = new List();
foreach (DataRow dr in dt.Rows)
{
T t = new T();
foreach (PropertyInfo pi in t.GetType().GetProperties())
{
if (dt.Columns.Contains(pi.Name))
{
if (!pi.CanWrite) continue;
var value = dr[pi.Name];
if (value != DBNull.Value)
{
switch (pi.PropertyType.FullName)
{
case "System.Decimal":
pi.SetValue(t, decimal.Parse(value.ToString()), null);
break;
case "System.String":
pi.SetValue(t, value.ToString(), null);
break;
case "System.Int32":
pi.SetValue(t, int.Parse(value.ToString()), null);
break;
default:
pi.SetValue(t, value, null);
break;
}
}
}
}
ts.Add(t);
}
return ts;
}
}
}