C# 使用JSON对数据序列化和反序列化.
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对数据序列化和反序列化.相关推荐
- Python-Day4 Python基础进阶之生成器/迭代器/装饰器/Json pickle 数据序列化
一.生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面 ...
- 使用JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength属性...
使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错.字符串的长度超过了为 maxJsonLength 属性设置的值. 解决办法是在web.config增加如下节点到& ...
- python pickle模块:数据序列化和反序列化
pickle模块是python中数据序列化和反序列化的一个包,该模块提供了一套算法,用于对一个Python对象进行serializing(序列化为字符串)和de-serializing(从字符串构 ...
- 迭代器/生成器/装饰器 /Json pickle 数据序列化
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...
- Day4 - 迭代器生成器、装饰器、Json pickle 数据序列化、软件目录结构规范
---恢复内容开始--- 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表 ...
- Python基础 day4 迭代器生成器 装饰器 Json pickle 数据序列化 软件目录结构规范 作业:ATM项目开发...
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 列表生成器 1.列表生成式,迭代器&生成器 列表生成式 孩子, ...
- JSON数据序列化与反序列化实战
一.关于JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写.是一种文件规范,绝大多数的编程语言均可以轻松读写.当然python也不 ...
- 在C#中使用Json.Net进行序列化和反序列化及定制化
序列化(Serialize)是将对象转换成字节流,并将其用于存储或传输的过程,主要用途是保存对象的状态,以便在需要时重新创建该对象:反序列化(Deserialize)则是将上面的字节流转换为相应对象的 ...
- c 语言 json序列化,C#中json字符串的序列化和反序列化 – 万能的聪哥 – 博客园...
今日写番茄闹钟程序,打算添加日程安排内容,使用到json格式文件的序列化和反序列化: 什么是Json ? Json[ 它是一个轻量级的数据交换格式,我们可以很简单的来读取和写它, 并且它很容易被计算机 ...
- json,pickle,shelve序列化和反序列化
1.简介 ● json:用于字符串 和 python简单数据类型(list,dict...)间进行转换:字符串<--->python简单数据类型 ● pickle:用于python特有 ...
最新文章
- bellman_ford寻找平均权值最小的回路
- Java学习总结:14
- 编写程序,输出所有3位数的水仙花数
- 完成一个H.265/HEVC码流分析工具
- 建立单链表 单链表的插入_单链列表插入
- 佐治亚理工学院 计算投资公开课第五周作业 市场仿真器
- stm32产生100k时钟信号_stm32f105/107系统时钟变慢
- 关于spring的配置文件总结
- 【渝粤教育】国家开放大学2018年秋季 0275-22T内科护理学 参考试题
- c++_如何将一个const变量转成非const变量_const_cast
- 单片机 数字电压表(ADC0809)
- AVOD-理解系列(二)
- 大数据前端个人提升与团队规划
- python谷歌翻译 频率限制_利用Google进行无长度限制的文本翻译(无需API,无需Money)...
- MATLAB入门之旅摘要
- (转)东方美人吉他谱及演奏(中川砂仁)
- 台式计算机没有声音怎么办,台式电脑没有声音了怎么恢复(在家用这两个方法轻松解决)...
- 亚商投资顾问早餐FM/0119阿兹夫定正式纳入医保
- C#制作一个简易抽奖或摇号器
- C语言调用API的方法