using Newtonsoft.Json;
using System.Runtime.CompilerServices;
using System.Text;
namespace WebApplication1
{
public static class ConvertorExtension
{
///
/// 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;
}
}
}