using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
using System.Collections;
namespace System
{
/// <summary>
/// 扩展方法
/// </summary>
public static class ExtendMethod
{
/// <summary>
/// 输出JSON字符串
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static string ToJSON(this Object obj)
{
if (obj == null) return null;
IsoDateTimeConverter timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };
return JsonConvert.SerializeObject(obj, Formatting.Indented, timeConverter);
//return JObject.FromObject(obj).ToString();
}
/// <summary>
/// 对象转换
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static T To<T>(this Object obj) where T : class
{
JsonSerializer setting = new JsonSerializer()
{
DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat,
DateFormatString = "yyyy-MM-dd HH:mm:ss"
//NullValueHandling = NullValueHandling.Ignore
};
if (typeof(IList).IsAssignableFrom(typeof(T)))
return JArray.FromObject(obj, setting).ToObject<T>();
else
return JObject.FromObject(obj, setting).ToObject<T>();
}
/// <summary>
/// 对象合并
/// 支持对简单对象按属性名称合并
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="tObj"></param>
/// <param name="obj"></param>
/// <returns></returns>
public static T Merge<T>(this Object tObj, params Object[] objArr) where T : class
{
JObject jobj = JObject.FromObject(tObj);
foreach (Object obj in objArr)
{
if (obj == null) continue;
jobj.Merge(JObject.FromObject(obj));
}
return jobj.ToObject<T>();
}
}
}