日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

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

 昵稱10504424 2014-06-23

利用.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:///post/2014/06/23/利用擴(kuò)展方法重寫JSON序列化和反序列化.aspx

分類: .NET

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多