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);

  • 相关阅读:
    Mybatis类型转换介绍
    简单的快捷方式
    一位资深程序员大牛给予Java初学者的学习路线建议
    题目1014:排名-----------------------此题是一个坑----------------------------------结构体还是用纯c语言不要夹杂c++
    题目1013:开门人和关门人----没有AC掉
    题目1038:Sum of Factorials
    题目1036:Old Bill------简单的模拟
    九度 题目1031:xxx定律
    九度 题目1020:最小长方形
    九度 题目1006:ZOJ问题-----------------我没有A掉
  • 原文地址:https://www.cnblogs.com/wlming/p/4778889.html
Copyright © 2011-2022 走看看