JsonHelper导出json的时候时间格式问题

这几天一直被导出json数据时DateTime类型的数据会自动识别成  \\/Date\((\d+)\+\d+\)\\/ 格式的数据而发愁,网上找了好多的方法都不行,今天自己写了一个方法结合看的一些资料最终完美实现。

方法如下:

json转换的方法

        /// <summary>  
        /// 格式化成Json字符串  
        /// </summary>  
        /// <param name="obj">需要格式化的对象</param>  
        /// <returns>Json字符串</returns>  
        public static string ToJson(this object obj)  
        {  
            // 首先,当然是JSON序列化  
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());  
            // 定义一个stream用来存发序列化之后的内容  
            Stream stream = new MemoryStream();  
            serializer.WriteObject(stream, obj);  
            // 从头到尾将stream读取成一个字符串形式的数据,并且返回  
            stream.Position = 0;  
            StreamReader streamReader = new StreamReader(stream);  
            return streamReader.ReadToEnd();  
        }  

主要用到了下面两个方法

string ReSetPage(HttpContext context)  
        {  
            string jsonStr = "";  
            var newsInfo = hsort.A.Skip(4).Take(4).ToList();  
            jsonStr = NetLibrary.JsonHelper.ToJson(newsInfo);  
            //foreach (Match match in reg.Matches(jsonStr))  
            //    Convert.ToDateTime(match.Value).ToString("yyyy年MM月dd日 hh:mm:ss");  
            string sPattern = @"\\/Date\((\d+)\+\d+\)\\/";  
            MatchEvaluator myMatchEvaluator = new MatchEvaluator(GetDatetimeString);  
            Regex reg = new Regex(sPattern);  
            jsonStr = reg.Replace(jsonStr, myMatchEvaluator);  
            return jsonStr;  
        }  
        /// <summary>  
        /// 将时间由"\/Date(10000000000+0700)\/" 格式转换成 "yyyy-MM-dd HH:mm:ss" 格式的字符串  
        /// </summary>  
        /// <param name="m"></param>  
        /// <returns></returns>  
        string GetDatetimeString(Match m)  
        {  
            string sRet = "";  
            try  
            {  
                System.DateTime dt = new DateTime(1970, 1, 1);  
                dt = dt.AddMilliseconds(long.Parse(m.Groups[1].Value));  
                dt = dt.ToLocalTime();  
                sRet = dt.ToString("yyyy-MM-dd HH:mm:ss");  
            }  
            catch  
            { }  
            return sRet;  
        }  

posted @ 2011-03-10 15:47  随风逝去  阅读(1105)  评论(0)    收藏  举报