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;
}

浙公网安备 33010602011771号