zoukankan      html  css  js  c++  java
  • C#自己封装序列化和反序列化方法

    ------------恢复内容开始------------

    现在要封装一个dll,里面请求接口前后需要进行序列化和反序列化,这个操作经常用第三方工具Newtonsoft.json,但是如果dll里面引用第三方框架的话,引用自己封装的dll时还需要引用一堆额外的包,这就显得有点臃肿;

    序列化:ObjectToJsonStrnig

    public class Helper
        {
            /// <summary>
            /// 将对象序列化为json字符串
            /// </summary>
            /// <typeparam name="T">类型</typeparam>
            /// <param name="t">实例</param>
            /// <returns>json字符串</returns>
            public static string ObjectToJsonString<T>(T t) where T : class
            {
                DataContractJsonSerializer formatter = new DataContractJsonSerializer(typeof(T));
                using (MemoryStream stream = new MemoryStream())
                {
                    formatter.WriteObject(stream, t);
                    string result = System.Text.Encoding.UTF8.GetString(stream.ToArray());
                    return result;
                }
            }
        }

    反序列化:JsonStringToObjcet:

    JavaScriptSerializer js = new JavaScriptSerializer();
    var       item = js.Deserialize<TaskItem>(result);

    这里只是引用了JavaScriptSerializer ,反序列化可以用反射将内容转为更规范的结果,比如Json中:“num":"10"=>"num":10,这只是一个思路等后边有时间再去研究这个,上面的暂且能用;

    更新:序列化和反序列化时需注意:C# 中DateTime?对应SqlServer中的DateTime  null  类型,还有时间格式如果年月日和时分秒中间带个T的

    JavaScriptSerializer 序列化不行,因为我这边序列化不需要用到时间,所以直接置为空。专业的事情还是得交给专业的工具做,如果项目中用还是引用Newtonsoft.json吧!
  • 相关阅读:
    【JavaWeb】Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(前言)
    【CityHunter】游戏流程设计及技术要点
    lua table操作
    python线程池(转)
    windows通过企业内部授权服务器激活方法
    贝叶斯定理(转)
    python 日期计算
    python 过滤 b'及提取 cmd命令返回值
    python 连接MySQL数据库
    python 获取昨天的日期
  • 原文地址:https://www.cnblogs.com/jf-ace/p/15529871.html
Copyright © 2011-2022 走看看