//json序列化和反序列化 using System.Runtime.Serialization.Json;
public static string JsonSerializer<T>(T t)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream();
ser.WriteObject(ms, t);
string jsonString = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
//替换Json的Date字符串
string p = @"\\/Date\((\d+)\+\d+\)\\/";
MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertJsonDateToDateString);
Regex reg = new Regex(p);
jsonString = reg.Replace(jsonString,matchEvaluator);
return jsonString;
} //反序列化
public static T JsonDeserialize<T>(string jsonString)
{
//将"yyyy-MM-dd HH:mm:ss"格式的字符串转为"\/Date(1294499956278+0800)\/"格式 string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";
string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";
MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertDateStringToJsonDate);
Regex reg = new Regex(p);
jsonString = reg.Replace(jsonString, matchEvaluator);
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
T obj = (T)ser.ReadObject(ms);
return obj;
} /// <summary>
/// /// 将Json序列化的时间由/Date(1294499956278+0800)转为字符串
/// /// </summary>
/// private static string ConvertJsonDateToDateString(Match m)
{
string result = string.Empty;
DateTime dt = new DateTime(,,);
dt = dt.AddMilliseconds(long.Parse(m.Groups[].Value));
dt = dt.ToLocalTime();
result = dt.ToString("yyyy-MM-dd HH:mm:ss");
return result;
}
/// <summary>
///
/// 将时间字符串转为Json时间
/// /// </summary>
/// private static string ConvertDateStringToJsonDate(Match m)
{
string result = string.Empty;
DateTime dt = DateTime.Parse(m.Groups[].Value);
dt = dt.ToUniversalTime();
TimeSpan ts = dt - DateTime.Parse("1970-01-01");
result = string.Format("\\/Date({0}+0800)\\/",ts.TotalMilliseconds);
return result;
} public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public DateTime LastLoginTime { get; set; }
} //序列化
Person p = new Person();
p.Name = "张三";
p.Age = ;
p.LastLoginTime = DateTime.Now;
string jsonString = JsonSerializer<Person>(p);
Response.Write(jsonString);
// 反序列化
string json = "{\"Age\":28,\"LastLoginTime\":\"2011-01-09 00:30:00\",\"Name\":\"张三\"}";
Person p = JsonDeserialize<Person>(json);
Response.Write("姓名:" + p.Name + "</br>");
Response.Write("年龄:" + p.Age+"</br>");
Response.Write("时间:" + p.LastLoginTime); List<Person>list=new List <Person>{
new Person{Name="张三",Age=},
new Person{Name="小白",Age=}
}; string jsonString = JsonSerializer<List< Person>>(list);
Response.Write(jsonString); Dictionary<string,string>Dic=new Dictionary<string,string>();
Dic.Add("Name", "");
Dic.Add("Age","");
string jsonString=JsonSerializer<Dictionary<string,string>>(Dic);
Response.Write(jsonString);

最新文章

  1. 4. 什么是AJAX
  2. 信息安全系统设计基础第四次实验报告20135324&amp;&amp;20135330
  3. Xamarin for Visual Studio 破解日志
  4. 深入理解Redis中的主键失效及其实现机制
  5. 【开源项目3】Android快速开源框架--afinal
  6. loadrunner java 缺少必要的导入包报错
  7. java.lang.ClassNotFoundException: org.apache.struts.action.ActionServlet
  8. OpenWrt 学习网址
  9. openstack临时存储后端
  10. Spring Boot 中关于自定义异常处理的套路!
  11. HashMap 和 Hashtable 的 6 个区别,最后一个没几个人知道!
  12. Python程序,辅助微信跳一跳游戏介绍
  13. 012PHP基础知识——运算符(五)
  14. BZOJ1183 Croatian2008 Umnozak 【数位DP】*
  15. 送给张思漫,李志媛和王颖的C语言经典例题
  16. Coursera助学金申请模板
  17. rails 下载 send_file
  18. python内存相关问题
  19. .netcore中无法使用System.Drawing --解决方案
  20. Java MD5加密算法工具类

热门文章

  1. android服务之MP3播放(2)
  2. setTimeout和setinterval的区别
  3. Smarty单模板多缓存
  4. Java开发利器Myeclipse全面详解
  5. 使用Servlet实现下载文件的功能
  6. Okio 1.9简单入门
  7. easyui-datagrid 的loader属性用法
  8. 数据库开发基础-SQl Server 变量、运算符、if、while
  9. C# 图片超过指定大小将压缩到指定大小不失真
  10. 【HDU 5750】Dertouzos(数学)