1. public class JsonHelper
  2. {
  3. /// <summary>
  4. /// 将Model转换为Json字符串
  5. /// </summary>
  6. /// <typeparam name="T"></typeparam>
  7. /// <param name="obj"></param>
  8. /// <returns></returns>
  9. public static string GetJson<T>(T obj)
  10. {
  11. try
  12. {
  13. DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(T));
  14. using (MemoryStream ms = new MemoryStream())
  15. {
  16. json.WriteObject(ms, obj);
  17. string strJson = Encoding.UTF8.GetString(ms.ToArray());
  18.  
  19. string p = @"\\/Date\((\d+)\+\d+\)\\/";
  20. MatchEvaluator me = new MatchEvaluator(ConvertJsonDateToDateString);
  21. Regex rg = new Regex(p);
  22. strJson = rg.Replace(strJson, me);
  23. return strJson;
  24. }
  25. }
  26. catch (Exception ex)
  27. {
  28.  
  29. }
  30.  
  31. return string.Empty;
  32. }
  33.  
  34. /// <summary>
  35. /// 将Json字符串转换为Model
  36. /// </summary>
  37. /// <typeparam name="T"></typeparam>
  38. /// <param name="strJson"></param>
  39. /// <returns></returns>
  40. public static T ParseJson<T>(string strJson)
  41. {
  42. try
  43. {
  44. string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}[a-z,A-Z]";
  45. MatchEvaluator me = new MatchEvaluator(ConvertDateTimeToJsonDate);
  46. Regex rg = new Regex(p);
  47. strJson = rg.Replace(strJson, me);
  48.  
  49. p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";
  50. me = new MatchEvaluator(ConvertDateTimeToJsonDate);
  51. rg = new Regex(p);
  52. strJson = rg.Replace(strJson, me);
  53.  
  54. using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strJson)))
  55. {
  56. DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
  57. T obj = (T)serializer.ReadObject(ms);
  58. return obj;
  59. }
  60. }
  61. catch (Exception ex)
  62. {
  63.  
  64. }
  65.  
  66. return default(T);
  67. }
  68.  
  69. /// <summary>
  70. /// 将Json序列化的时间由/Date(1294499956278+0800)转为字符串
  71. /// </summary>
  72. /// <param name="m"></param>
  73. /// <returns></returns>
  74. private static string ConvertJsonDateToDateString(Match m)
  75. {
  76. string result = string.Empty;
  77. DateTime dt = new DateTime(, , );
  78. dt = dt.AddMilliseconds(long.Parse(m.Groups[].Value));
  79. dt = dt.ToLocalTime();
  80. result = dt.ToString("yyyy-MM-dd HH:mm:ss");
  81. return result;
  82. }
  83.  
  84. /// <summary>
  85. /// 将时间字符串转化成json时间
  86. /// </summary>
  87. /// <param name="m"></param>
  88. /// <returns></returns>
  89. private static string ConvertDateTimeToJsonDate(Match m)
  90. {
  91. string result = string.Empty;
  92. DateTime dt = DateTime.Parse(m.Groups[].Value);
  93. dt = dt.ToUniversalTime();
  94. TimeSpan ts = dt - DateTime.Parse("1970-01-01");
  95. result = string.Format("\\/Date({0}+0800)\\/", ts.TotalMilliseconds);
  96. return result;
  97. }
  98. }

注:如果是要将Class类Json序列化时,在实体类上面和成员上面添加一个契约,和WCF 契约一样。
举例如:

  1. /// <summary>
  2. /// 至爱甄选实体类
  3. /// </summary>
  4. [Serializable]
  5. [DataContract]
  6. public class FavoriteInfo
  7. {
  8. private int _id;
  9. private string _title;/// <summary>
  10. /// 至爱甄选Id
  11. /// </summary>
  12. [DataMember]
  13. public int Id
  14. {
  15. set { _id = value; }
  16. get { return _id; }
  17. }
  18.  
  19. [DataMember]
  20. /// <summary>
  21. /// 标题
  22. /// </summary>
  23. public string Title
  24. {
  25. set { _title = value; }
  26. get { return _title; }
  27. }
  28.  
  29. }

调用方式如下:

  1. //获取数据集,返回List<FavoriteInfo>
  2. IList<FavoriteInfo> favoriteModelList = new PB.Favorite().GetFavoriteModelList(, , "");
  3. if (favoriteModelList!=null && favoriteModelList.Count>)
  4. {
  5. string jsonString = JsonHelper.GetJson<IList<FavoriteInfo>>(favoriteModelList);
  6. context.Response.Write(jsonString);
  7. }

C# Json 序列化大全--任我行的更多相关文章

  1. Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全 C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数 C# 算法题系列(一) 两数之和、无重复字符的最长子串 DateTime Tips c#发送邮件,可发送多个附件 MVC图片上传详解

    Newtonsoft.Json C# Json序列化和反序列化工具的使用.类型方法大全   Newtonsoft.Json Newtonsoft.Json 是.Net平台操作Json的工具,他的介绍就 ...

  2. python json序列化与反序列化操作

    python json序列化与反序列化操作 # dumps() dict-->str 序列化 # loads() str---dict 反序列化 result1 = json.dumps({'a ...

  3. .Net深入实战系列—JSON序列化那点事儿

    序 当前主流的序列化JSON字符串主要有两种方式:JavaScriptSerializer及Json.net(Nuget标识:Newtonsoft.Json).JavaScriptSerializer ...

  4. Newtonsoft.Json 序列化和反序列化 时间格式【转】

    1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg:   A a=new A(); a.Name="Elain ...

  5. [.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类

    [.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类 本节导读: 关于JSON序列化,不能 ...

  6. DotNet的JSON序列化与反序列化

    JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.在现在的通信中,较多的采用JSON数据格式,JSON有 ...

  7. C#中JSON序列化和反序列化

    有一段时间没有到博客园写技术博客了,不过每天逛逛博客园中大牛的博客还是有的,学无止境…… 最近在写些调用他人接口的程序,用到了大量的JSON.XML序列化和反序列化,今天就来总结下json的序列化和反 ...

  8. 使用JSON.Net(Newtonsoft.Json)作为ASP.Net MVC的json序列化和反序列化工具

    ASP.Net MVC默认的JSON序列化使用的是微软自己的JavaScriptSerializer.性能低不说,最让人受不了的是Dictionary<,>和Hashtable类型居然对应 ...

  9. Windows Phone 六、JSON序列化

    JSON序列化 public class Person { public int Id { get; set; } public string Name { get; set; } public in ...

随机推荐

  1. 如何把某个网站的SSL Server certificate链导入到ABAP Netweaver系统里

    我们在用ABAP代码消费外网的url时会遇到一些异常,比如ICM_HTTP_SSL_PEER_CERT_UNTRUSTED,这是因为请求的url所在的网站的SSL Server certificate ...

  2. 你真的会用ABAP, Java和JavaScript里的constructor么?

    如果constructor里调用了一个成员方法,这个方法被子类override了,当初始化一个子类实例时,父类的构造函数被的调用,此时父类构造函数的上下文里调用的成员方法,是父类的实现还是子类的实现? ...

  3. POJ-1469 COURSES---二分图最大匹配--匈牙利算法

    题目链接: https://vjudge.net/problem/POJ-1469 题目大意: 给你p门课程和n个学生,一个学生可以选0门,1门,或者多门课程,现在要求一个由p个学生组成的集合,满足下 ...

  4. 课程设计__C++初步,C++对C的扩充

    小草的C++要结课了,小草终于翻起书来,小草用的老谭的书,有什么不对的就找老谭去吧. ///C++初步 ///C++对C的扩展 #include <iostream> using name ...

  5. linux客户端传输文件到Windows本地

    1.rz/sz安装及使用方法 和 FileZilla 功能类似用于上传文件,上传速度比较慢适用比较小的文件  yum安装: $ sudo yum install lrzsz   打开SecureCRT ...

  6. orderBy 过滤器

    orderBy 过滤器根据表达式排列数组: <!DOCTYPE html><html><head><meta http-equiv="Content ...

  7. linux下jdk的安装配置

    1.下载jdk:地址 选中你选择的版本,下载linux版本对应你系统的32位或64位. 我这里选择的是64位. 2.使用你的ssh直连工具把安装包丢到/usr/local/目录下 3.解压安装jdk ...

  8. tree树形

    /**  * tree  * @param menuBeans  * @param pid  * @return  */ public JSON  makeTree(List<MenuBean& ...

  9. windows服务器配置tomcat开机自动启动

    背景:最近在做服务器部署的工作,开始的时候都是手动将tomcat进行启动的,但是在遇到几次服务器重启后发现这样太过麻烦,影响项目运行,故事就从这里开始了. 我们的项目是使用spring-boot进行开 ...

  10. Map the Debris -freecodecamp算法题目

    Map the Debris 1.要求 返回一个数组,其内容是把原数组中对应元素的平均海拔转换成其对应的轨道周期. 原数组中会包含格式化的对象内容,像这样 {name: 'name', avgAlt: ...