zoukankan      html  css  js  c++  java
  • 一个JSON序列化类,可序列化匿名类型

    /// <summary>
        /// Json扩展方法类(编译时检查,类型安全)
        /// </summary>
        public static class JsonContextExtension
        {
            /// <summary>
            /// 从一个对象信息生成Json串
            /// </summary>
            /// <param name="obj">转换对象</param>
            /// <typeparam name="T">对象类型</typeparam>
            /// <returns></returns>
            public static string ToJson<T>(this T obj)
            {
                if (typeof(T).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 = string.Empty;
                    using (MemoryStream stream = new MemoryStream())
                    {
                        serializer.WriteObject(stream, obj);
                        json = Encoding.UTF8.GetString(stream.ToArray());
                        stream.Close();
                    }
                    return json;
                }
            }
            /// <summary>
            /// 从一个Json串生成对象信息
            /// </summary>
            /// <param name="jsonString">JSON字符串</param>
            /// <typeparam name="T">对象类型</typeparam>
            /// <returns></returns>
            public static T JsonToObject<T>(this string jsonString)
            {
    
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
                using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
                {
                    var jsonobj = (T)serializer.ReadObject(stream);
                    stream.Close();
                    return jsonobj;
                }
            }
        }
    
  • 相关阅读:
    Linux 进程退出后自动启动
    Python UDP broadcast PermissionError: [Errno 13] Permission denied
    C# 获取MAC地址
    C# 多线程
    C# UdpClient 设置超时时间
    C# 控件聚焦
    C# 添加图片资源
    C# Listview 第一列不能居中
    Ubuntu 14.04 AM335x TI-RTOS 编译
    为AM335x移植Linux内核主线代码
  • 原文地址:https://www.cnblogs.com/cabbage/p/2282558.html
Copyright © 2011-2022 走看看