json 序列化与反序列化C#类
程序员文章站
2022-04-16 15:51:17
...
添加System.runtime.serialization.dll引用
public static class JsonSerializer { private static ITracing _tracing = TracingManager.GetTracing(typeof(JsonSerializer)); ////// 将指定对象序列化为 JavaScript 对象表示法 (JSON) 数据,并将生成的 JSON 写入流中。 /// ///对象类型 /// 流对象 /// 序列化对象 public static void Serialize(Stream stream, T obj) { JsonSerializeProxy .Default.Serialize(stream, obj); } /// /// 将指定对象序列化为 JavaScript 对象表示法 (JSON) 数据,并返回对应的字符串。 /// ///对象类型 /// 序列化对象 ///JavaScript 对象表示法 (JSON) 字符串 public static string Serialize(T obj) { using (MemoryStream ms = new MemoryStream()) { JsonSerializeProxy .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 (string jsonStr) { return JsonSerializeProxy .Default.DeSerialize(jsonStr); } } public class JsonSerializeProxy { private static readonly JsonSerializeProxy _default = new JsonSerializeProxy (); private DataContractJsonSerializer _serializer; public static JsonSerializeProxy Default { get { return _default; } } private JsonSerializeProxy() { _serializer = new DataContractJsonSerializer(typeof(T)); } public void Serialize(Stream stream, T obj) { _serializer.WriteObject(stream, obj); } /// /// 将JSON字符串反序列化为对象 /// /// json字符串 ///public T DeSerialize(string jsonStr) { MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonStr)); T obj = (T)_serializer.ReadObject(ms); return obj; } }
上一篇: DataTables搜索框查询如何实现结果高亮显示效果
下一篇: 关于数据表反三范式的一点疑问?
推荐阅读