1.json帮助类
/// <summary>
/// Json帮助类
/// </summary>
public class JsonHelper
{
/// <summary>
/// 将对象序列化为JSON格式
/// </summary>
/// <param name="o">对象</param>
/// <returns>json字符串</returns>
public static string SerializeObject(object o)
{
string json = JsonConvert.SerializeObject(o);
return json;
}
/// <summary>
/// 解析JSON字符串生成对象实体
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="json">json字符串(eg.{"ID":"1","Name":"test"})</param>
/// <returns>对象实体</returns>
public static T DeserializeJsonToObject<T>(string json) where T : class
{
JsonSerializer serializer = new JsonSerializer();
StringReader sr = new StringReader(json);
object o = serializer.Deserialize(new JsonTextReader(sr), typeof(T));
T t = o as T;
return t;
}
/// <summary>
/// 解析JSON数组生成对象实体集合
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="json">json数组字符串(eg.[{"ID":"1","Name":"test"}])</param>
/// <returns>对象实体集合</returns>
public static List<T> DeserializeJsonToList<T>(string json) where T : class
{
JsonSerializer serializer = new JsonSerializer();
StringReader sr = new StringReader(json);
object o = serializer.Deserialize(new JsonTextReader(sr), typeof(List<T>));
List<T> list = o as List<T>;
return list;
}
/// <summary>
/// 反序列化JSON到给定的匿名对象.
/// </summary>
/// <typeparam name="T">匿名对象类型</typeparam>
/// <param name="json">json字符串</param>
/// <param name="anonymousTypeObject">匿名对象</param>
/// <returns>匿名对象</returns>
public static T DeserializeAnonymousType<T>(string json, T anonymousTypeObject)
{
T t = JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject);
return t;
}
}
2.String的一些相关对象转换
/// <summary>
/// 数字转换
/// </summary>
/// <param name="intStr">需要转换的值</param>
/// <param name="isCallZero">是否返回0</param>
/// <returns></returns>
public int? ConverToInt(object intStr, bool isCallZero = true)
{
int result = 0;
if (intStr != null && !string.IsNullOrEmpty(intStr.ToString().Trim()))
{
if (Int32.TryParse(intStr.ToString().Trim(), out result)) return result;
}
if (isCallZero) return result;
else return null;
}
//转换成int
public int ConvertToIntDefault(object intStr,int defaultVal=0)
{
int v = defaultVal;
Int32.TryParse(intStr.ToString().Trim(), out v);
return v;
}
/// <summary>
/// 将对象转换成Double类型并进行四舍五入保留两位数
/// </summary>
/// <param name="intStr"></param>
/// <param name="isCallZero"></param>
/// <param name="floatNum"></param>
/// <returns></returns>
public double? ConverToDouble(object intStr, bool isCallZero = true, int floatNum = 2)
{
double result = 0;
if (intStr != null && !string.IsNullOrEmpty(intStr.ToString().Trim()))
{
if (double.TryParse(intStr.ToString().Trim(), out result)) return Math.Round(result, floatNum);
}
if (isCallZero) return result;
else return null;
}
public double ConvertToDoubleDefafult(object doubleStr,double defaultVal=0)
{
double v = defaultVal;
double.TryParse(doubleStr.ToString(), out v);
return v;
}
public byte? ConverToByte(object intStr, bool isCallZero = true)
{
byte result = 0;
if (intStr != null && !string.IsNullOrEmpty(intStr.ToString().Trim()))
{
if (byte.TryParse(intStr.ToString().Trim(), out result)) return result;
}
if (isCallZero) return result;
else return null;
}
/// <summary>
/// 小数转换
/// </summary>
/// <param name="intStr">需要转换的值</param>
/// <param name="isCallZero">是否返回0</param>
/// <param name="floatNum">保留小数位数</param>
/// <returns></returns>
public decimal? ConverToDecimal(object intStr, bool isCallZero = true, int floatNum = 2)
{
decimal result = 0;
if (intStr != null && !string.IsNullOrEmpty(intStr.ToString().Trim()))
{
if (decimal.TryParse(intStr.ToString().Trim(), out result)) return Math.Round(result, floatNum);
}
if (isCallZero) return result;
else return null;
}
3.有关与时间的转换
public DateTime? ConvertToDateTime(object dateTime)
{
DateTime dt;
if (dateTime != null && !string.IsNullOrEmpty(dateTime.ToString().Trim()) && dateTime.ToString().Trim() != "0001-01-01")
{
if (DateTime.TryParse(dateTime.ToString().Trim(), out dt)) return dt;
}
return null;
}
/// <summary>
/// 计算两段时间间隔(精确到秒)
/// </summary>
/// <param name="dtStart">开始时间</param>
/// <param name="dtEnd">结束时间</param>
/// <returns></returns>
public decimal GetTimeSpan(DateTime? dtStart, DateTime? dtEnd)
{
decimal timeSpan = 0;
if (dtStart.HasValue && dtEnd.HasValue)
{
TimeSpan span = (DateTime)dtEnd - (DateTime)dtStart;
timeSpan = (decimal)((span.Hours * 3600 + span.Minutes * 60 + span.Seconds) / 3600.00);
}
return timeSpan;
}
public DateTime? ConverTimeToDateTime(object time, DateTime? workTime)
{
if (workTime.HasValue && time != null && !string.IsNullOrEmpty(time.ToString().Trim()) && time.ToString().Trim() != "00:00:00")
{
string dateTime = string.Format("{0} {1}", FormatDateTime(workTime, "yyyy-MM-dd"), time);
return ConvertToDateTime(dateTime);
}
return null;
}