C#json帮助类
来源:互联网 发布:mac vim开始编辑 编辑:程序博客网 时间:2024/05/21 15:06
public class JsonHelper { /// <summary> /// 把Json转成List<T> /// </summary> /// <typeparam name="T"></typeparam> /// <param name="html"></param> /// <returns></returns> public static IList<T> JsonToList<T>(string html) { IList<T> result = new List<T>(); html = FormatJson(html); try { DataContractJsonSerializer _Json = new DataContractJsonSerializer(result.GetType()); byte[] _Using = System.Text.Encoding.UTF8.GetBytes(html); System.IO.MemoryStream _MemoryStream = new System.IO.MemoryStream(_Using); _MemoryStream.Position = 0; object obj = _Json.ReadObject(_MemoryStream); ; result = (IList<T>)obj; } catch (Exception) { html = AttributeToVariable(html); DataContractJsonSerializer _Json = new DataContractJsonSerializer(result.GetType()); byte[] _Using = System.Text.Encoding.UTF8.GetBytes(html); System.IO.MemoryStream _MemoryStream = new System.IO.MemoryStream(_Using); _MemoryStream.Position = 0; object obj = _Json.ReadObject(_MemoryStream); ; result = (IList<T>)obj; } return result; } #region // 格式化Json字符串 /// <summary> /// 格式化Json字符串,使之能转换成List /// </summary> /// <param name="html"></param> /// <returns></returns> public static string FormatJson(string value) { string p = @"(new Date)\(+([0-9,-]+)+(\))"; MatchEvaluator matchEvaluator = new MatchEvaluator(FormatJsonMatch); Regex reg = new Regex(p); bool isfind = reg.IsMatch(value); value = reg.Replace(value, matchEvaluator); return value; } /// <summary> /// 将Json序列化的时间由new Date(1373387734703)转为字符串"\/Date(1373387734703)\/" /// </summary> private static string FormatJsonMatch(Match m) { return string.Format("\"\\/Date({0})\\/\"", m.Groups[2].Value); } #endregion // 格式化Json字符串 #region // 格式化日期 /// <summary> /// 将Json序列化的时间由new Date(1373390933250) 或Date(1373390933250)或"\/Date(1373390933250+0800)\/" /// 转为2013-07-09 17:28:53 /// 主要用于传给前台 /// </summary> /// <param name="html"></param> /// <returns></returns> public static string FormatJsonDate(string value) { string p = @"(new Date)\(+([0-9,-]+)+(\))"; MatchEvaluator matchEvaluator = new MatchEvaluator(FormatJsonDateMatch); Regex reg = new Regex(p); value = reg.Replace(value, matchEvaluator); p = @"(Date)\(+([0-9,-]+)+(\))"; matchEvaluator = new MatchEvaluator(FormatJsonDateMatch); reg = new Regex(p); value = reg.Replace(value, matchEvaluator); p = "\"\\\\\\/" + @"Date(\()([0-9,-]+)([+])([0-9,-]+)(\))" + "\\\\\\/\""; matchEvaluator = new MatchEvaluator(FormatJsonDateMatch); reg = new Regex(p); value = reg.Replace(value, matchEvaluator); return value; } /// <summary> /// 将Json序列化的时间由Date(1294499956278+0800)转为字符串 /// </summary> private static string FormatJsonDateMatch(Match m) { string result = string.Empty; DateTime dt = new DateTime(1970, 1, 1); dt = dt.AddMilliseconds(long.Parse(m.Groups[2].Value)); dt = dt.ToLocalTime(); result = dt.ToString("yyyy-MM-dd HH:mm:ss"); return result; } #endregion // 格式化日期 #region // 属性和变量转换 /// <summary> /// 属性转变量 /// 把"<address>k__BackingField":"1", /// 转成"address":"1", /// </summary> /// <param name="value"></param> /// <returns></returns> public static string AttributeToVariable(string value) { string p = @"\<([A-Z,a-z,0-9,_]*)\>k__BackingField"; MatchEvaluator matchEvaluator = new MatchEvaluator(AttributeToVariableMatch); Regex reg = new Regex(p); bool isfind = reg.IsMatch(value); value = reg.Replace(value, matchEvaluator); return value; } private static string AttributeToVariableMatch(Match m) { return m.Groups[1].Value; } /// <summary> /// 变量转属性 /// 把"address":"1", /// 转成"<address>k__BackingField":"1", /// </summary> /// <param name="value"></param> /// <returns></returns> public static string VariableToAttribute(string value) { string p = "\\\"([A-Z,a-z,0-9,_]*)\\\"\\:"; MatchEvaluator matchEvaluator = new MatchEvaluator(VariableToAttributeMatch); Regex reg = new Regex(p); bool isfind = reg.IsMatch(value); value = reg.Replace(value, matchEvaluator); return value; } private static string VariableToAttributeMatch(Match m) { return string.Format("\"<{0}>k__BackingField\":", m.Groups[1].Value); } #endregion // 属性和变量转换 }
0 0
- C#json帮助类
- C#JSON转换帮助类---Newtonsoft.Json
- JSONHelper JSON帮助类
- JSON帮助类
- JSON 帮助类
- JSON帮助类
- c#通用json帮助类
- JSON传输图片帮助类
- NET JSON XML帮助类
- JSON传输图片帮助类
- C# json转换帮助类
- JSON传输图片帮助类
- .Net Json解析帮助类
- C#FTP帮助 类
- Java常见帮助类(6)JSON帮助类
- asp.net JSONHelper JSON帮助类
- C#xml操作帮助类
- 一个递归处理json tree树节点帮助类
- c# json数据的操作
- apache-hadoop-1.2.1、hbase、hive、mahout、nutch、solr安装教程
- POJ 3080 Blue Jeans KMP
- 线性同余方程
- jQuery中表单验证插件
- C#json帮助类
- C 语言中的ADT 中的一个列表的问题
- 寻找链表的倒数第k个节点
- c#通用json帮助类
- win7 开启wifi,设置共享文件夹
- [Java] Myeclipse 解决到期不能用的问题
- C优化篇之优化内存访问
- 智能寻路贪吃蛇系列之 贪吃蛇AI算法的优化
- 堆排序算法