C# Json 序列化大全--任我行
- public class JsonHelper
- {
- /// <summary>
- /// 将Model转换为Json字符串
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="obj"></param>
- /// <returns></returns>
- public static string GetJson<T>(T obj)
- {
- try
- {
- DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(T));
- using (MemoryStream ms = new MemoryStream())
- {
- json.WriteObject(ms, obj);
- string strJson = Encoding.UTF8.GetString(ms.ToArray());
- string p = @"\\/Date\((\d+)\+\d+\)\\/";
- MatchEvaluator me = new MatchEvaluator(ConvertJsonDateToDateString);
- Regex rg = new Regex(p);
- strJson = rg.Replace(strJson, me);
- return strJson;
- }
- }
- catch (Exception ex)
- {
- }
- return string.Empty;
- }
- /// <summary>
- /// 将Json字符串转换为Model
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="strJson"></param>
- /// <returns></returns>
- public static T ParseJson<T>(string strJson)
- {
- try
- {
- string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}[a-z,A-Z]";
- MatchEvaluator me = new MatchEvaluator(ConvertDateTimeToJsonDate);
- Regex rg = new Regex(p);
- strJson = rg.Replace(strJson, me);
- p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";
- me = new MatchEvaluator(ConvertDateTimeToJsonDate);
- rg = new Regex(p);
- strJson = rg.Replace(strJson, me);
- using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strJson)))
- {
- DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
- T obj = (T)serializer.ReadObject(ms);
- return obj;
- }
- }
- catch (Exception ex)
- {
- }
- return default(T);
- }
- /// <summary>
- /// 将Json序列化的时间由/Date(1294499956278+0800)转为字符串
- /// </summary>
- /// <param name="m"></param>
- /// <returns></returns>
- 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>
- /// <param name="m"></param>
- /// <returns></returns>
- private static string ConvertDateTimeToJsonDate(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;
- }
- }
注:如果是要将Class类Json序列化时,在实体类上面和成员上面添加一个契约,和WCF 契约一样。
举例如:
- /// <summary>
- /// 至爱甄选实体类
- /// </summary>
- [Serializable]
- [DataContract]
- public class FavoriteInfo
- {
- private int _id;
- private string _title;/// <summary>
- /// 至爱甄选Id
- /// </summary>
- [DataMember]
- public int Id
- {
- set { _id = value; }
- get { return _id; }
- }
- [DataMember]
- /// <summary>
- /// 标题
- /// </summary>
- public string Title
- {
- set { _title = value; }
- get { return _title; }
- }
- }
调用方式如下:
- //获取数据集,返回List<FavoriteInfo>
- IList<FavoriteInfo> favoriteModelList = new PB.Favorite().GetFavoriteModelList(, , "");
- if (favoriteModelList!=null && favoriteModelList.Count>)
- {
- string jsonString = JsonHelper.GetJson<IList<FavoriteInfo>>(favoriteModelList);
- context.Response.Write(jsonString);
- }
C# Json 序列化大全--任我行的更多相关文章
- Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全 C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数 C# 算法题系列(一) 两数之和、无重复字符的最长子串 DateTime Tips c#发送邮件,可发送多个附件 MVC图片上传详解
Newtonsoft.Json C# Json序列化和反序列化工具的使用.类型方法大全 Newtonsoft.Json Newtonsoft.Json 是.Net平台操作Json的工具,他的介绍就 ...
- python json序列化与反序列化操作
python json序列化与反序列化操作 # dumps() dict-->str 序列化 # loads() str---dict 反序列化 result1 = json.dumps({'a ...
- .Net深入实战系列—JSON序列化那点事儿
序 当前主流的序列化JSON字符串主要有两种方式:JavaScriptSerializer及Json.net(Nuget标识:Newtonsoft.Json).JavaScriptSerializer ...
- Newtonsoft.Json 序列化和反序列化 时间格式【转】
1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg: A a=new A(); a.Name="Elain ...
- [.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类
[.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类 本节导读: 关于JSON序列化,不能 ...
- DotNet的JSON序列化与反序列化
JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.在现在的通信中,较多的采用JSON数据格式,JSON有 ...
- C#中JSON序列化和反序列化
有一段时间没有到博客园写技术博客了,不过每天逛逛博客园中大牛的博客还是有的,学无止境…… 最近在写些调用他人接口的程序,用到了大量的JSON.XML序列化和反序列化,今天就来总结下json的序列化和反 ...
- 使用JSON.Net(Newtonsoft.Json)作为ASP.Net MVC的json序列化和反序列化工具
ASP.Net MVC默认的JSON序列化使用的是微软自己的JavaScriptSerializer.性能低不说,最让人受不了的是Dictionary<,>和Hashtable类型居然对应 ...
- Windows Phone 六、JSON序列化
JSON序列化 public class Person { public int Id { get; set; } public string Name { get; set; } public in ...
随机推荐
- 如何把某个网站的SSL Server certificate链导入到ABAP Netweaver系统里
我们在用ABAP代码消费外网的url时会遇到一些异常,比如ICM_HTTP_SSL_PEER_CERT_UNTRUSTED,这是因为请求的url所在的网站的SSL Server certificate ...
- 你真的会用ABAP, Java和JavaScript里的constructor么?
如果constructor里调用了一个成员方法,这个方法被子类override了,当初始化一个子类实例时,父类的构造函数被的调用,此时父类构造函数的上下文里调用的成员方法,是父类的实现还是子类的实现? ...
- POJ-1469 COURSES---二分图最大匹配--匈牙利算法
题目链接: https://vjudge.net/problem/POJ-1469 题目大意: 给你p门课程和n个学生,一个学生可以选0门,1门,或者多门课程,现在要求一个由p个学生组成的集合,满足下 ...
- 课程设计__C++初步,C++对C的扩充
小草的C++要结课了,小草终于翻起书来,小草用的老谭的书,有什么不对的就找老谭去吧. ///C++初步 ///C++对C的扩展 #include <iostream> using name ...
- linux客户端传输文件到Windows本地
1.rz/sz安装及使用方法 和 FileZilla 功能类似用于上传文件,上传速度比较慢适用比较小的文件 yum安装: $ sudo yum install lrzsz 打开SecureCRT ...
- orderBy 过滤器
orderBy 过滤器根据表达式排列数组: <!DOCTYPE html><html><head><meta http-equiv="Content ...
- linux下jdk的安装配置
1.下载jdk:地址 选中你选择的版本,下载linux版本对应你系统的32位或64位. 我这里选择的是64位. 2.使用你的ssh直连工具把安装包丢到/usr/local/目录下 3.解压安装jdk ...
- tree树形
/** * tree * @param menuBeans * @param pid * @return */ public JSON makeTree(List<MenuBean& ...
- windows服务器配置tomcat开机自动启动
背景:最近在做服务器部署的工作,开始的时候都是手动将tomcat进行启动的,但是在遇到几次服务器重启后发现这样太过麻烦,影响项目运行,故事就从这里开始了. 我们的项目是使用spring-boot进行开 ...
- Map the Debris -freecodecamp算法题目
Map the Debris 1.要求 返回一个数组,其内容是把原数组中对应元素的平均海拔转换成其对应的轨道周期. 原数组中会包含格式化的对象内容,像这样 {name: 'name', avgAlt: ...