博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 编写通用的JSON数据进行序列化和反序列化
阅读量:5188 次
发布时间:2019-06-13

本文共 1468 字,大约阅读时间需要 4 分钟。

注意事项:使用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);

 

转载于:https://www.cnblogs.com/wlming/p/4778889.html

你可能感兴趣的文章
【UVa 540】Team Queue
查看>>
Advanced Architecture for ASP.NET Core Web API
查看>>
排序算法(二)
查看>>
4.4 多线程进阶篇<下>(NSOperation)
查看>>
如何更改Android的默认虚拟机地址(Android virtual driver路径设置)
查看>>
Python内置函数(36)——iter
查看>>
事件双向绑定原理
查看>>
HTML标签_1
查看>>
[Angular] @ViewChildren and QueryLists (ngAfterViewInit)
查看>>
jsp组成元素
查看>>
排序算法(转)
查看>>
windows自带的可生成各种数据库连接字符串工具打开方法
查看>>
Linux查看系统开机时间(转)
查看>>
form表单中method的get和post区别
查看>>
【做题】arc068_f-Solitaire——糊结论
查看>>
Poj 1094 拓扑排序 水题
查看>>
Oracle SQL查询,日期过滤条件要注意的一点
查看>>
链表快排
查看>>
链表操作合集
查看>>
leetcode852 C++ 20ms 找最高峰 序列先增后减
查看>>