json 序列化与反序列化C#类
发布时间:2020-12-15 17:52:01 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 public static class JsonSerializer { private static ITracing _tracing = TracingManager.GetTracing(typeof(JsonSerializer)); /// summary ///
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 public static class JsonSerializer { private static ITracing _tracing = TracingManager.GetTracing(typeof(JsonSerializer)); /// <summary> /// 将指定对象序列化为 JavaScript 对象表示法 (JSON) 数据,并将生成的 JSON 写入流中。 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="stream">流对象</param> /// <param name="obj">序列化对象</param> public static void Serialize<T>(Stream stream,T obj) { JsonSerializeProxy<T>.Default.Serialize(stream,obj); } /// <summary> /// 将指定对象序列化为 JavaScript 对象表示法 (JSON) 数据,并返回对应的字符串。 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="obj">序列化对象</param> /// <returns>JavaScript 对象表示法 (JSON) 字符串</returns> public static string Serialize<T>(T obj) { using (MemoryStream ms = new MemoryStream()) { JsonSerializeProxy<T>.Default.Serialize(ms,obj); string jsonStr = Encoding.UTF8.GetString(ms.ToArray()); _tracing.InfoFmt("{0} json serialize result: {1}",typeof(T).ToString(),jsonStr); return jsonStr; } } public static T DeSerialize<T>(string jsonStr) { return JsonSerializeProxy<T>.Default.DeSerialize(jsonStr); } } public class JsonSerializeProxy<T> { private static readonly JsonSerializeProxy<T> _default = new JsonSerializeProxy<T>(); private DataContractJsonSerializer _serializer; public static JsonSerializeProxy<T> Default { get { return _default; } } private JsonSerializeProxy() { _serializer = new DataContractJsonSerializer(typeof(T)); } public void Serialize(Stream stream,T obj) { _serializer.WriteObject(stream,obj); } /// <summary> /// 将JSON字符串反序列化为对象 /// </summary> /// <param name="jsonStr">json字符串</param> /// <returns></returns> public T DeSerialize(string jsonStr) { MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonStr)); T obj = (T)_serializer.ReadObject(ms); return obj; } } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |