现在很多的项目都在使用MVC-EF,前段使用vue angularjs 等框架,在使用的过程中,大家可能都出现过一个问题,就是后端返回的JSON数据,关于DateTime字段JSON成了"/Date(20130450000365)"这种形式,这样对于页面呈现使用带来了很大的麻烦,聪明点的同学可能会拿去拆分字符串,取出中间的时间戳进行转换,然后又实用js进行格式化.....
从上面的步骤来看,这个过程并不简单,甚至繁琐。依我个人的说法就是:是不好用,麻烦,不能普罗大众。哪有没有好的办法呢?下面我就为大家介绍下其他办法
1.自己封装一个方法,自己设置其中的时间转换规则,下面是代码
public static class JsonHelper { private static JsonSerializerSettings _jsonSettings; #region init static JsonHelper() { IsoDateTimeConverter datetimeConverter = new IsoDateTimeConverter(); datetimeConverter.DateTimeFormat = "yyyy-MM-dd HH:mm:ss"; _jsonSettings = new JsonSerializerSettings(); _jsonSettings.MissingMemberHandling = MissingMemberHandling.Ignore; _jsonSettings.NullValueHandling = NullValueHandling.Ignore; _jsonSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; _jsonSettings.Converters.Add(datetimeConverter); } #endregion #region 将指定的对象序列化成 JSON 数据。 /// <summary> /// 将指定的对象序列化成 JSON 数据。 /// </summary> /// <param name="obj">要序列化的对象。</param> /// <returns></returns> public static string ToJson(this object obj) { try { if (null == obj) return null; return JsonConvert.SerializeObject(obj, Formatting.None, _jsonSettings); } catch (Exception ex) { throw new Exception("Json序列化出错:" + ex.Message); } } #endregion #region 将指定的 JSON 数据反序列化成指定对象。 /// <summary> /// 将指定的 JSON 数据反序列化成指定对象。 /// </summary> /// <typeparam name="T">对象类型。</typeparam> /// <param name="json">JSON 数据。</param> /// <returns></returns> public static T FromJson<T>(this string json) { try { return JsonConvert.DeserializeObject<T>(json, _jsonSettings); } catch (Exception ex) { throw new Exception("Json反序列化出错:" + ex.Message); } } #endregion }