• .NET C# 数据网络传输前后的序列及反序列化


    1.工具类

    using System.Collections.Generic;
    using Newtonsoft.Json;

    namespace Infrastructure
    {
        public static class DataTransferExtensions
        {
            /// <summary>
            /// 获取服务端传输过来的数据,将其Base64解码,解压缩,恢复为List T
            /// </summary>
            public static List<T> GetCompressTransferDatas<T>(string sourceString) where T : class
            {
                if (string.IsNullOrEmpty(sourceString)) return new List<T>();
                List<T> list = JsonConvert.DeserializeObject<List<T>>(CompressionExtensions.DecompressString(CompressionExtensions.FromBase64String(sourceString)));
                return list;
            }

            /// <summary>
            /// 获取服务端传输过来的数据,将其Base64解码,解压缩,恢复为T
            /// </summary>
            public static T GetCompressTransferData<T>(string sourceString) where T : class
            {
                if (string.IsNullOrEmpty(sourceString)) return default(T);
                T result = JsonConvert.DeserializeObject<T>(CompressionExtensions.DecompressString(CompressionExtensions.FromBase64String(sourceString)));
                return result;
            }

            /// <summary>
            /// 获取服务端传输过来的数据,将其Base64解码,解压缩,恢复为JSON格式字串
            /// </summary>
            public static string GetCompressTransferDataJson(string sourceString)
            {
                if (string.IsNullOrEmpty(sourceString)) return string.Empty;
                return CompressionExtensions.DecompressString(CompressionExtensions.FromBase64String(sourceString));
            }

            /// <summary>
            /// 根据传值过来的List T 将其转换为对应的压缩字串,并将其Base64编码
            /// </summary>
            public static string SetCompressTransferDataCompressed<T>(List<T> list) where T : class
            {
                if (list == null || list.Count == 0) return string.Empty;
                string json = JsonConvert.SerializeObject(list);
                return CompressionExtensions.ToBase64String(CompressionExtensions.CompressString(json));
            }

            /// <summary>
            /// 根据传值过来的T 将其转换为对应的压缩字串,并将其Base64编码
            /// </summary>
            public static string SetCompressTransferDataCompressed<T>(T instance) where T : class
            {
                if (instance == null) return string.Empty;
                string json = JsonConvert.SerializeObject(instance);
                return CompressionExtensions.ToBase64String(CompressionExtensions.CompressString(json));
            }

            /// <summary>
            /// JSON数据转List T 数据
            /// </summary>
            public static List<T> GetTransferDatas<T>(string sourceString) where T : class
            {
                if (string.IsNullOrEmpty(sourceString)) return new List<T>();
                List<T> list = JsonConvert.DeserializeObject<List<T>>(sourceString);
                return list;
            }

            /// <summary>
            /// JSON数据转T 数据
            /// </summary>
            public static T GetTransferData<T>(string sourceString) where T : class
            {
                if (string.IsNullOrEmpty(sourceString)) return default(T);
                T instance = JsonConvert.DeserializeObject<T>(sourceString);
                return instance;
            }

            /// <summary>
            /// List T 数据转JSON数据
            /// </summary>
            public static string SetTransferDataJson<T>(List<T> list) where T : class
            {
                if (list == null || list.Count == 0) return string.Empty;
                return JsonConvert.SerializeObject(list);
            }

            /// <summary>
            /// T 数据转JSON数据
            /// </summary>
            public static string SetTransferDataJson<T>(T instance) where T : class
            {
                if (instance == null) return string.Empty;
                return JsonConvert.SerializeObject(instance);
            }
        }
    }
    2.使用方法

    List<T> items = new List<T>();

    xxx //items赋值

    string strs = DataTransferExtensions.SetCompressTransferDataCompressed(items);//序列化

    List<T> temps = DataTransferExtensions.GetTransferDatas<T>(strs);//反序列化

  • 相关阅读:
    《几何与代数导引》习题1.34.2
    《几何与代数导引》习题1.35.3
    《几何与代数导引》习题1.27
    【Android游戏开发之八】游戏中添加音频详解MediaPlayer与SoundPoo!并讲解两者的区别和游戏中的用途!
    【Android游戏开发之十】(优化处理)详细剖析Android Traceview效率检视工具,分析程序运行速度!并讲解两种创建SDcard方式!
    【Android游戏开发之十】(优化处理)详细剖析Android Traceview效率检视工具,分析程序运行速度!并讲解两种创建SDcard方式!
    【Android游戏开发之七】(游戏开发中需要的样式)再次剖析游戏开发中对SurfaceView中添加组件方案!
    【Android游戏开发之六】在SurfaceView中添加系统控件,并且相互交互数据!
    【Android游戏开发十八】解放手指,利用传感器开发游戏!(本文讲解在SurfaceView中用重力传感器控制圆球的各方向移动)
    【Android游戏开发十一】手把手让你爱上Android sdk自带“9妹”(9patch 工具),让Android游戏开发更方便!
  • 原文地址:https://www.cnblogs.com/jeff151013/p/11739449.html
Copyright © 2020-2023  润新知