using Newtonsoft.Json; using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System; using System.Text.RegularExpressions; namespace Elight.Utility.Extensions { public static class ConvertorHelper { /// /// model=>json string /// /// /// /// private readonly static JsonSerializerSettings settings = new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore, ReferenceLoopHandling = ReferenceLoopHandling.Ignore }; public static string ConvertToJsonStr(this T t) { try { return JsonConvert.SerializeObject(t, Formatting.None, settings); } catch { return default; } } public static T DeepCopy(this T t) { return t.ConvertToJsonStr().ConvertToModel(); } /// /// json转为匿名对象 /// /// /// /// /// public static T ConvertToAnonymousType(this object json, T anonymousTypeObject) { try { return JsonConvert.DeserializeAnonymousType(json.ToString(), anonymousTypeObject); } catch { return default; } } /// /// object 转匿名类 /// /// /// /// /// public static T ConvertToAnonymous(this object anonymous, T anonymousType) { try { if (anonymous != null) { return (T)anonymous; } else { return default; } } catch { return default; } } /// /// json string=>mdoel /// /// /// /// public static T ConvertToModel(this string str, [CallerMemberName] string methodname = "") { try { return JsonConvert.DeserializeObject(str); } catch (Exception) { return default; } } public static string ConvertToBase64(this string str) { return Convert.ToBase64String(Encoding.Default.GetBytes(str)); } public static string ConvertToGetParam(this object obj) { StringBuilder strBui = new StringBuilder(); System.Reflection.PropertyInfo[] proArray = obj.GetType().GetProperties(); foreach (System.Reflection.PropertyInfo pro in proArray) { if (strBui.Length < 1) { strBui.Append("?"); } else { strBui.Append("&"); } strBui.Append(string.Format("{0}={1}", pro.Name, pro.GetValue(obj, null))); } return strBui.ToString(); } // DateTime --> long public static long ConvertDateTimeToLong(DateTime dt) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); TimeSpan toNow = dt.Subtract(dtStart); long timeStamp = toNow.Ticks; timeStamp = long.Parse(timeStamp.ToString().Substring(0, timeStamp.ToString().Length - 4)); return timeStamp; } // long --> DateTime public static DateTime ConvertLongToDateTime(long d) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); long lTime = long.Parse(d + "0000"); TimeSpan toNow = new TimeSpan(lTime); DateTime dtResult = dtStart.Add(toNow); return dtResult; } } }