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吧!
原文地址:https://www.cnblogs.com/jf-ace/p/15529871.html