C#中一个简单的序列化工具类(序列化成Json格式并压缩)

前提条件,使用Newtonsoft.Json库

1、提供了将对象序列化成Json对象和反序列化的方法
2、将序列化后的对象压缩后返回String类型对象以及解压缩的方法

    public class Serializer
    {
        /// <summary>
        /// 序列化对象并转成String对象
        /// </summary>
        /// <param name="_message"></param>
        /// <returns></returns>
        public static string Pack(Object _message)
        {
            using (MemoryStream input = SerializeObjectToStream(_message))
            {
                input.Seek(0, SeekOrigin.Begin);
                using (MemoryStream output = new MemoryStream())
                {
                    //压缩
                    using (DeflateStream deflateStream = new DeflateStream(output, CompressionMode.Compress))
                    {
                        input.CopyTo(deflateStream);
                        deflateStream.Close();

                        return Convert.ToBase64String(output.ToArray());
                    }
                }
            }
        }

        /// <summary>
        /// String转二进制流并反序列化
        /// </summary>
        /// <param name="_packed"></param>
        /// <returns></returns>
        public static T Unpack<T>(string _packed)
        {
            using (MemoryStream input = new MemoryStream(Convert.FromBase64String(_packed)))
            {
                //解压缩
                using (DeflateStream deflateStream = new DeflateStream(input, CompressionMode.Decompress))
                {
                    using (MemoryStream output = new MemoryStream())
                    {
                        deflateStream.CopyTo(output);
                        deflateStream.Close();
                        output.Seek(0, SeekOrigin.Begin);
                        //反序列化
                        T message = DeserializeObjectFromStream<T>(output);
                        return message;
                    }
                }
            }
        }

        // 对象序列化方法
        public static MemoryStream SerializeObjectToStream<T>(T obj)
        {
            var json = JsonConvert.SerializeObject(obj);
            var bytes = Encoding.UTF8.GetBytes(json);
            return new MemoryStream(bytes);
        }

        // 对象反序列化方法
        public static T DeserializeObjectFromStream<T>(Stream stream)
        {
            stream.Seek(0, SeekOrigin.Begin); // 重置流位置到开头
            var bytes = new byte[stream.Length];
            stream.Read(bytes, 0, bytes.Length);
            var json = Encoding.UTF8.GetString(bytes);
            return JsonConvert.DeserializeObject<T>(json);
        }
    }

自己在项目中遇到的需要将对象转化成Json格式传递,所以写了一个小的工具类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值