C# .net中json字符串和对象之间的转化方法

时间:2023-05-15 20:53:02

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的各个版本都有。

  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。

  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实现。具体可参考