zoukankan      html  css  js  c++  java
  • C# 使用JSON对数据序列化和反序列化.

    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

  • 相关阅读:
    vue:自定义指令
    vue去掉严格开发,即去掉vue-cli安装时的eslint
    vue路由6:导航钩子
    vue路由5:命名视图
    vue路由3:子路由
    vue组件通信之任意级组件之间的通信
    vue中组件通信之子父通信
    令狐冲也是个情场高手啊
    Java —— 时区(夏令时)问题
    PL/SQL 如何导出INSERT语句
  • 原文地址:https://www.cnblogs.com/wuzhsh/p/2816838.html
Copyright © 2011-2022 走看看