C# 使用JSON对数据序列化和反序列化.
2012-12-13 18:04
826 查看
public static class JsonHelper { /// <summary> /// JSON序列化 /// </summary> public static string JsonSerializer<T>(T t) { //so DataContractJsonSerializer 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
相关文章推荐
- C# 使用JSON对数据序列化和反序列化.
- Java,C#使用二进制序列化、反序列化操作数据
- Unity 中使用C#的序列化和反序列化处理游戏数据
- c# 使用 Newtonsoft.Json 序列化json字符串以及,反序列化对象
- C# 编写通用的JSON数据进行序列化和反序列化
- ASP.NET C#使用JavaScriptSerializer实现序列化与反序列化得到JSON
- c#中对json数据的序列化和反序列化(笔记)
- C#使用DataContractJsonSerializer实现Json格式的序列化和反序列化
- ASP.NET C#使用JavaScriptSerializer实现序列化与反序列化得到JSON
- C#json数据的序列化和反序列化(将数据转换为对象或对象集合)
- [C#] 使用 DataContractJsonSerializer 序列化 反序列化
- C#序列化及反序列化Json对象通用类JsonHelper
- java 使用xom对象数据序列化为xml、反序列化、Preferences相关操作小案例
- Unity (C#) 使用 LitJson 处理 JSON 数据
- C# Json 序列化和反序列化 工具类 Newtonsoft.Json.dll
- Jackson序列化和反序列化Json数据完整示例
- 使用NewtonSoft.JSON.dll来序列化和反序列化对象
- Newtonsoft.Json 使用 C#序列号json,反序列化对象
- Json工具类--使用Gson实现了Json的序列化和反序列化
- Json 的使用技巧,序列化和反序列化