json 序列化與反序列化C#類
添加System.runtime.serialization.dll引用
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; } } </pre>
本文由用戶 m47c 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!