zoukankan      html  css  js  c++  java
  • C# 编写通用的JSON数据进行序列化和反序列化

    注意事项:使用JSON系列化和反系列化,必须要添加引用System.Runtime.Serialization。

        1.通用类代码如下:

        /// <summary>
        /// JSON序列化和反序列化辅助类
        /// </summary>
        public class JsonHelper
        {
            /// <summary>
            /// JSON序列化
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="t"></param>
            /// <returns></returns>
            public static string JsonSerializer<T>(T t)
            {
                DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
                MemoryStream ms = new MemoryStream();
                ser.WriteObject(ms, t);
                string jsonString = Encoding.UTF8.GetString(ms.ToArray());
                ms.Close();
                return jsonString;
            }

            /// <summary>
            /// JSON反序列化
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="jsonString"></param>
            /// <returns></returns>
            public static T JsonDeserialize<T>(string jsonString)
            {
                DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
                MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
                T obj = (T)ser.ReadObject(ms);
                ms.Close();
                return obj;
            }
        }

         2.定义调用类,如下:

        /// <summary>
        /// 定义类
        /// </summary>
        public class Person
        {
            public string Name { get; set; }
            public int Age { get; set; }
        }

        3.调用系列化和反系列化的操作如下:

                Person p = new Person();
                p.Name = "陈磊";
                p.Age = 29;

                //调用JSON系列化

                string strJson = JsonHelper.JsonSerializer<Person>(p);
                Console.WriteLine(strJson);

               //调用JSON反系列化
                string strDJson = "{"Age":28,"Name":"陈磊"}";
                Person dp = JsonHelper.JsonDeserialize<Person>(strDJson);
                Console.WriteLine(dp.Name + "," + dp.Age);

  • 相关阅读:
    学习:GridView中asp:BoundField的Visible=false时,无法取到这个字段的值
    C#读、写、删除注册表
    ERROR [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
    Gridview隐藏列的取值问题
    SQL 2005导入EXCEL
    GridView使用LinkButton和Button两种方式的删除确认
    (转)ASP.Net的AccessDataSource设置错误"未将对象引用设置到对象的实例"的解决方案
    给GridView文本加上边框
    (转)从客户端中检测到有潜在危险的 Request.Form 值
    (转)Asp.net中的ServerVariables集合
  • 原文地址:https://www.cnblogs.com/wlming/p/4778889.html
Copyright © 2011-2022 走看看