zoukankan      html  css  js  c++  java
  • .NET JSON对象序列化和反序列化

    class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("============================序列化单个对象为JSON格式======================================================");
                var jsonObj = GetUser().ToJsonString(); 
                Console.WriteLine(jsonObj + "
    
     ");
              
                Console.WriteLine("============================序列化集合对象为JSON格式======================================================");
                var jsonListObj = GetList().ToJsonString();
                Console.WriteLine(jsonListObj + "
    
     ");
             
                Console.WriteLine("============================序列化字符串集合======================================================");
                var jsonStrObj = GetString().ToJsonString();
                Console.WriteLine(jsonStrObj + "
    
     ");
    
                Console.WriteLine("============================构建一个JSON对象,反序列化为User对象===================================");
                //构建JSON对象
                string str = "{"Description":"少林袈裟旗舰店店长","Id":"1","Name":"少林扫地神僧"}";
                var user = str.ToJsonObject<User>();
                var entityObj = string.Format("json format str convert to user object:Id={0},Name={1},Description={2}", user.Id, user.Name, user.Description);
                Console.WriteLine(entityObj);
                Console.ReadKey();
            }
    
            public static User GetUser()
            {
                User user = new User()
                {
                    Id = 1,
                    Name = "无崖子",
                    Description = "逍遥派掌门"
                };
                return user;
            }
    
            public static List<User> GetList()
            {
                List<User> list = new List<User>() { 
                    new User(){ Id=1,Name="丁春秋", Description="星宿派掌门"},
                    new User(){ Id=2,Name="庄聚贤", Description="无所事事的帅哥"},
                    new User(){ Id=3,Name="段正淳", Description="风流倜傥大理王爷"}};
                return list;
            }
    
    
            public static IList<string> GetString()
            {
                IList<string> strList = new List<string>();
                strList.Add("乔峰");
                strList.Add("段誉");
                strList.Add("虚竹");
                return strList;
            }
        }
    
    
        public class User
        {
            public int Id { get; set; }
    
            public string Name { get; set; }
    
            public string Description { get; set; }
        }
    
    
    
        public static class StringExtensions
        {
            /// <summary>
            /// 将对象转化为Json字符串
            /// </summary>
            /// <typeparam name="T">对象类型</typeparam>
            /// <param name="instanse">对象本身</param>
            /// <returns>JSON字符串</returns>
            public static string ToJsonString<T>(this T instanse)
            {
                try
                {
                    DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(T));
                    using (MemoryStream ms = new MemoryStream())
                    {
                        js.WriteObject(ms, instanse);
                        ms.Flush();
                        ms.Seek(0, SeekOrigin.Begin);
                        StreamReader sr = new StreamReader(ms);
                        return sr.ReadToEnd();
                    }
                }
                catch
                {
                    return String.Empty;
                }
            }
    
            /// <summary>
            /// 将字符串转化为JSON对象,如果转换失败,返回default(T)
            /// </summary>
            /// <typeparam name="T">对象类型</typeparam>
            /// <param name="s">字符串</param>
            /// <returns>转换值</returns>
            public static T ToJsonObject<T>(this string s)
            {
                try
                {
                    DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(T));
                    using (MemoryStream ms = new MemoryStream())
                    {
                        StreamWriter sw = new StreamWriter(ms);
                        sw.Write(s);
                        sw.Flush();
                        ms.Seek(0, SeekOrigin.Begin);
                        return (T)js.ReadObject(ms);
                    }
                }
                catch
                {
                    return default(T);
                }
            }
        }

  • 相关阅读:
    Progressbar
    winform c# 打包
    WinForm中给DataGridView添加 自动编号
    ASP.NET页面的CheckBoxList组件
    C#截取DOS命令输出流取得网卡MAC地址
    get; set ; 害的我搞了一天
    WinForm(C#) 引用app.config文件中的数据库
    WinForm编程中 Enter自动登录设置
    vs新建解决方案,添加新项目,为什么不在解决方案中显示
    使用delegate实现两窗体传参代码
  • 原文地址:https://www.cnblogs.com/chenhaibo/p/3223048.html
Copyright © 2011-2022 走看看