------------恢复内容开始------------
现在要封装一个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吧!