1. 程式人生 > >C# .net中json字符串和對象之間的轉化方法

C# .net中json字符串和對象之間的轉化方法

tools ade href start 反射 serialize lan serializa serial

http://blog.csdn.net/xuexiaodong009/article/details/46998069

json作為作為一種最常用的數據,應用很廣泛,在.net中如何把一個對象轉化為json字符串呢?

主要有一下幾種

1按照json的定義自己轉化,難度很大,但很靈活。需要自己處理各種特殊字符,各種數據類型

2使用開源的類庫Newtonsoft.Json

3使用JavaScriptSerializer類

4使用System.Runtime.Serialization.dll提供的DataContractJsonSerializer或者 JsonReaderWriterFactory實現。

1按照json的定義自己轉化,難度很大,但很靈活。需要自己處理各種特殊字符,各種數據類型

要寫成通用的核心就是使用反射。

2使用開源的類庫Newtonsoft.Json,很方便,.net的各個版本都有。

[csharp] view plain copy
  1. /// <summary>
  2. /// 對象轉為json
  3. /// </summary>
  4. /// <typeparam name="ObjType"></typeparam>
  5. /// <param name="obj"></param>
  6. /// <returns></returns>
  7. public static string ObjToJsonString<ObjType>(ObjType obj) where ObjType : class
  8. {
  9. string s = JsonConvert.SerializeObject(obj);
  10. return s;
  11. }
  12. /// <summary>
  13. /// json轉為對象
  14. /// </summary>
  15. /// <typeparam name="ObjType"></typeparam>
  16. /// <param name="JsonString"></param>
  17. /// <returns></returns>
  18. public static ObjType JsonStringToObj<ObjType>(string JsonString) where ObjType : class
  19. {
  20. ObjType s = JsonConvert.DeserializeObject<ObjType>(JsonString);
  21. return s;
  22. }


3JavaScriptSerializer類 ,使用.NET Framework 3.5/4.0中提供的System.Web.Script.Serialization命名空間下的JavaScriptSerializer類進行對象的序列化與反序列化。需要添加程序集System.Web.Extensions.dll。

[csharp] view plain copy
  1. /// <summary>
  2. /// 對象轉為json
  3. /// </summary>
  4. /// <typeparam name="ObjType"></typeparam>
  5. /// <param name="obj"></param>
  6. /// <returns></returns>
  7. public static string ObjToJsonString<ObjType>(ObjType obj) where ObjType : class
  8. {
  9. JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
  10. string s = jsonSerializer.Serialize(obj);
  11. return s;
  12. }
  13. /// <summary>
  14. /// json轉為對象
  15. /// </summary>
  16. /// <typeparam name="ObjType"></typeparam>
  17. /// <param name="JsonString"></param>
  18. /// <returns></returns>
  19. public static ObjType JsonStringToObj<ObjType>(string JsonString) where ObjType : class
  20. {
  21. JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
  22. ObjType s = jsonSerializer.Deserialize<ObjType>(JsonString);
  23. return s;
  24. }

4使用System.Runtime.Serialization.dll提供的DataContractJsonSerializer或者 JsonReaderWriterFactory實現。具體可參考

C# .net中json字符串和對象之間的轉化方法