public static class JsonHelper{/// <summary>/// JSON序列化/// </summary>public static string JsonSerializer<T>(T t){//soDataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));MemoryStream ms = new MemoryStream();ser.WriteObject(ms, t);string jsonString = Encoding.UTF8.GetString(ms.ToArray());ms.Close();//替换Json的Date字符串const string p = @"\\/Date\((\d+)\+\d+\)\\/";MatchEvaluator matchEvaluator = ConvertJsonDateToDateString;Regex reg = new Regex(p);jsonString = reg.Replace(jsonString, matchEvaluator);return jsonString;}/// <summary>/// 从一个对象信息生成Json串/// </summary>/// <param name="obj">转换对象</param>/// <typeparam name="T">对象类型</typeparam>/// <returns></returns>public static string ToJson<T>(this T obj){var fullName = typeof (T).FullName;if (fullName != null && fullName.Contains("<>f__AnonymousType")){//匿名类型var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();return serializer.Serialize(obj);}else{var serializer = new DataContractJsonSerializer(typeof(T));string json;using (MemoryStream stream = new MemoryStream()){serializer.WriteObject(stream, obj);json = Encoding.UTF8.GetString(stream.ToArray());stream.Close();}return json;}}/// <summary>/// JSON反序列化/// </summary>public static T JsonDeserialize<T>(string jsonString){//将"yyyy-MM-dd HH:mm:ss"格式的字符串转为"\/Date(1294499956278+0800)\/"格式const string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";MatchEvaluator 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){DateTime dt = new DateTime(1970, 1, 1);dt = dt.AddMilliseconds(long.Parse(m.Groups[1].Value));dt = dt.ToLocalTime();string result = dt.ToString("yyyy-MM-dd HH:mm:ss");return result;}/// <summary>/// 将时间字符串转为Json时间/// </summary>private static string ConvertDateStringToJsonDate(Match m){DateTime dt = DateTime.Parse(m.Groups[0].Value);dt = dt.ToUniversalTime();TimeSpan ts = dt - DateTime.Parse("1970-01-01");string result = string.Format("\\/Date({0}+0800)\\/", ts.TotalMilliseconds);return result;}}

原文地址http://blog.csdn.net/allsharps/article/details/7357446

转载于:https://www.cnblogs.com/wuzhsh/archive/2012/12/13/2816838.html

C# 使用JSON对数据序列化和反序列化.相关推荐

  1. Python-Day4 Python基础进阶之生成器/迭代器/装饰器/Json pickle 数据序列化

    一.生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面 ...

  2. 使用JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength属性...

    使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错.字符串的长度超过了为 maxJsonLength 属性设置的值. 解决办法是在web.config增加如下节点到& ...

  3. python pickle模块:数据序列化和反序列化

      pickle模块是python中数据序列化和反序列化的一个包,该模块提供了一套算法,用于对一个Python对象进行serializing(序列化为字符串)和de-serializing(从字符串构 ...

  4. 迭代器/生成器/装饰器 /Json pickle 数据序列化

    本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...

  5. Day4 - 迭代器生成器、装饰器、Json pickle 数据序列化、软件目录结构规范

    ---恢复内容开始--- 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表 ...

  6. Python基础 day4 迭代器生成器 装饰器 Json pickle 数据序列化 软件目录结构规范 作业:ATM项目开发...

    本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 列表生成器 1.列表生成式,迭代器&生成器 列表生成式 孩子, ...

  7. JSON数据序列化与反序列化实战

    一.关于JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写.是一种文件规范,绝大多数的编程语言均可以轻松读写.当然python也不 ...

  8. 在C#中使用Json.Net进行序列化和反序列化及定制化

    序列化(Serialize)是将对象转换成字节流,并将其用于存储或传输的过程,主要用途是保存对象的状态,以便在需要时重新创建该对象:反序列化(Deserialize)则是将上面的字节流转换为相应对象的 ...

  9. c 语言 json序列化,C#中json字符串的序列化和反序列化 – 万能的聪哥 – 博客园...

    今日写番茄闹钟程序,打算添加日程安排内容,使用到json格式文件的序列化和反序列化: 什么是Json ? Json[ 它是一个轻量级的数据交换格式,我们可以很简单的来读取和写它, 并且它很容易被计算机 ...

  10. json,pickle,shelve序列化和反序列化

    1.简介 ●  json:用于字符串 和 python简单数据类型(list,dict...)间进行转换:字符串<--->python简单数据类型 ●  pickle:用于python特有 ...

最新文章

  1. bellman_ford寻找平均权值最小的回路
  2. Java学习总结:14
  3. 编写程序,输出所有3位数的水仙花数
  4. 完成一个H.265/HEVC码流分析工具
  5. 建立单链表 单链表的插入_单链列表插入
  6. 佐治亚理工学院 计算投资公开课第五周作业 市场仿真器
  7. stm32产生100k时钟信号_stm32f105/107系统时钟变慢
  8. 关于spring的配置文件总结
  9. 【渝粤教育】国家开放大学2018年秋季 0275-22T内科护理学 参考试题
  10. c++_如何将一个const变量转成非const变量_const_cast
  11. 单片机 数字电压表(ADC0809)
  12. AVOD-理解系列(二)
  13. 大数据前端个人提升与团队规划
  14. python谷歌翻译 频率限制_利用Google进行无长度限制的文本翻译(无需API,无需Money)...
  15. MATLAB入门之旅摘要
  16. (转)东方美人吉他谱及演奏(中川砂仁)
  17. 台式计算机没有声音怎么办,台式电脑没有声音了怎么恢复(在家用这两个方法轻松解决)...
  18. 亚商投资顾问早餐FM/0119阿兹夫定正式纳入医保
  19. C#制作一个简易抽奖或摇号器
  20. C语言调用API的方法

热门文章

  1. kafka生产者API操作
  2. 什么是去中心化?交易所为什么要去中心化?
  3. 企业微信2.6.0发布 可与微信用户群聊了
  4. 船舶网络搭建项目案例
  5. 使用qq邮箱服务器来实现laravel的邮件发送
  6. iOS学习笔记32 - 锚点
  7. Javascript:谈谈JS的全局变量跟局部变量
  8. 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete
  9. BZOJ4552: [Tjoi2016Heoi2016]排序
  10. mysql 小数转换成百分数查出(保留两位小数百分数)