免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
利用擴(kuò)展方法重寫JSON序列化和反序列化

利用.NET 3.5以后的擴(kuò)展方法重寫JSON序列化和反序列化,在代碼可讀性和可維護(hù)性上更加加強(qiáng)了。

首先是不使用擴(kuò)展方法的寫法

定義部分:

  1. /// <summary>
  2. /// JSON序列化反序列化工具
  3. /// </summary>
  4. public class JSONControl
  5. {
  6. /// <summary>
  7. /// JSON序列化
  8. /// </summary>
  9. /// <typeparam name="T"></typeparam>
  10. /// <param name="_Object"></param>
  11. /// <returns></returns>
  12. public static String JsonSerializer<T>(T _Object)
  13. {
  14. using (MemoryStream TempMemoryStream = new MemoryStream())
  15. {
  16. String MySerializationString = String.Empty;
  17. DataContractJsonSerializer MyDataContractJsonSerializer = new DataContractJsonSerializer(typeof(T));
  18. MyDataContractJsonSerializer.WriteObject(TempMemoryStream, _Object);
  19. MySerializationString = Encoding.UTF8.GetString(TempMemoryStream.ToArray());
  20. return MySerializationString;
  21. }
  22. }
  23. /// <summary>
  24. /// 反序列化
  25. /// </summary>
  26. /// <typeparam name="T"></typeparam>
  27. /// <param name="_JsonString"></param>
  28. /// <returns></returns>
  29. public static T JsonDeserializer<T>(String _JsonString)
  30. {
  31. using (MemoryStream TempMemoryStream = new MemoryStream(Encoding.UTF8.GetBytes(_JsonString)))
  32. {
  33. DataContractJsonSerializer MyDataContractJsonSerializer = new DataContractJsonSerializer(typeof(T));
  34. return (T)MyDataContractJsonSerializer.ReadObject(TempMemoryStream);
  35. }
  36. }
  37. }

使用部分:

  1. /// <summary>
  2. /// 場景控制對象
  3. /// </summary>
  4. public class SceneControl
  5. {
  6. /// <summary>
  7. /// 臨時(shí)序列化對象
  8. /// </summary>
  9. [DataContract]
  10. public class TempClass
  11. {
  12. /// <summary>
  13. /// 屬性1
  14. /// </summary>
  15. [DataMember(Name = "Property1")]
  16. public String Property1 { get; set; }
  17. /// <summary>
  18. /// 屬性2
  19. /// </summary>
  20. [DataMember(Name = "Property2")]
  21. public String Property2 { get; set; }
  22. }
  23. /// <summary>
  24. /// 測試
  25. /// </summary>
  26. public void Test()
  27. {
  28. String JsonString = "{'Property1':'111','Property2':'2'}";
  29. TempClass MyTempClass = JSONControl.JsonDeserializer<TempClass>(JsonString);
  30. }
  31. }

然后是使用擴(kuò)展方法的寫法

定義部分:

  1. /// <summary>
  2. /// JSON序列化反序列化工具
  3. /// </summary>
  4. public static class JSONControl
  5. {
  6. /// <summary>
  7. /// JSON序列化
  8. /// </summary>
  9. /// <typeparam name="T"></typeparam>
  10. /// <param name="_Object"></param>
  11. /// <returns></returns>
  12. public static String ObjectToJson<T>(this T _Object)
  13. {
  14. using (MemoryStream TempMemoryStream = new MemoryStream())
  15. {
  16. String MySerializationString = String.Empty;
  17. DataContractJsonSerializer MyDataContractJsonSerializer = new DataContractJsonSerializer(typeof(T));
  18. MyDataContractJsonSerializer.WriteObject(TempMemoryStream, _Object);
  19. MySerializationString = Encoding.UTF8.GetString(TempMemoryStream.ToArray());
  20. return MySerializationString;
  21. }
  22. }
  23. /// <summary>
  24. /// JSON反序列化
  25. /// </summary>
  26. /// <typeparam name="T"></typeparam>
  27. /// <param name="_JsonString"></param>
  28. /// <returns></returns>
  29. public static T JsonToObject<T>(this String _JsonString)
  30. {
  31. using (MemoryStream TempMemoryStream = new MemoryStream(Encoding.UTF8.GetBytes(_JsonString)))
  32. {
  33. DataContractJsonSerializer MyDataContractJsonSerializer = new DataContractJsonSerializer(typeof(T));
  34. return (T)MyDataContractJsonSerializer.ReadObject(TempMemoryStream);
  35. }
  36. }
  37. }

使用部分:

  1. /// <summary>
  2. /// 場景控制對象
  3. /// </summary>
  4. public class SceneControl
  5. {
  6. /// <summary>
  7. /// 臨時(shí)序列化對象
  8. /// </summary>
  9. [DataContract]
  10. public class TempClass
  11. {
  12. /// <summary>
  13. /// 屬性1
  14. /// </summary>
  15. [DataMember(Name = "Property1")]
  16. public String Property1 { get; set; }
  17. /// <summary>
  18. /// 屬性2
  19. /// </summary>
  20. [DataMember(Name = "Property2")]
  21. public String Property2 { get; set; }
  22. }
  23. /// <summary>
  24. /// 測試
  25. /// </summary>
  26. public void Test()
  27. {
  28. String JsonString = "{'Property1':'111','Property2':'2'}";
  29. TempClass MyTempClass = JsonString.JsonToObject<TempClass>();
  30. }
  31. }

原文地址:http://zhangrou.net/post/2014/06/23/利用擴(kuò)展方法重寫JSON序列化和反序列化.aspx

分類: .NET
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C#中讀取json數(shù)據(jù)
ASP.NET中JSON的序列化和反序列化
asp.net 序列化 C#類 到JSON字符串,JSON字符串 逆轉(zhuǎn)為 類
公共的Json操作C#類
[.net 面向?qū)ο蟪绦蛟O(shè)計(jì)進(jìn)階] (13) 序列化(Serialization)(五) JSON序列化利器 Newtonsoft.Json 及 通用Json類
c# 解析JSON的幾種辦法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服