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吧!
  • 相关阅读:
    udhcpd配置及使用
    射频全网通笔记(附全球频段划分及主要运营商对应表)
    Source Insight教程
    关于学习
    一次OGG ERROR OGG-01091 Unable to open file "./dirdat/th079817" 的问题解决
    mysql建立的一个自动更新组织树案案例
    1055
    了解一个A*数据库的数据
    mysql安装
    通过CONTRAB 执行脚本进行监控
  • 原文地址:https://www.cnblogs.com/jf-ace/p/15529871.html
Copyright © 2011-2022 走看看