JsonHandleHelper.cs 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Runtime.Serialization.Json;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace NXWMS.Code.Serialize
  10. {
  11. /// <summary>
  12. /// Json帮助类
  13. /// </summary>
  14. public static class JsonHandleHelper
  15. {
  16. /// <summary>
  17. /// 将对象序列化为JSON格式
  18. /// </summary>
  19. /// <param name="o">对象</param>
  20. /// <returns>json字符串</returns>
  21. public static string SerializeObject(object o)
  22. {
  23. string json = JsonConvert.SerializeObject(o);
  24. return json;
  25. }
  26. /// <summary>
  27. /// 解析JSON字符串生成对象实体
  28. /// </summary>
  29. /// <typeparam name="T">对象类型</typeparam>
  30. /// <param name="json">json字符串(eg.{"ID":"112","Name":"石子儿"})</param>
  31. /// <returns>对象实体</returns>
  32. public static T DeserializeJsonToObject<T>(string json) where T : class
  33. {
  34. JsonSerializer serializer = new JsonSerializer();
  35. StringReader sr = new StringReader(json);
  36. object o = serializer.Deserialize(new JsonTextReader(sr), typeof(T));
  37. T t = o as T;
  38. return t;
  39. }
  40. /// <summary>
  41. /// 解析JSON字符串生成对象实体 第二种方法
  42. /// </summary>
  43. /// <typeparam name="T"></typeparam>
  44. /// <param name="json"></param>
  45. /// <returns></returns>
  46. public static T DeJsonSerializer<T>(string json)
  47. {
  48. if (json == null)
  49. {
  50. return default(T);
  51. }
  52. DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
  53. using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
  54. {
  55. object obj = ser.ReadObject(ms);
  56. ms.Close();
  57. if (obj == null)
  58. {
  59. throw new NotImplementedException("序列化实体为NULL,json:" + json);
  60. }
  61. return (T)obj;
  62. }
  63. }
  64. /// <summary>
  65. /// 解析JSON数组生成对象实体集合
  66. /// </summary>
  67. /// <typeparam name="T">对象类型</typeparam>
  68. /// <param name="json">json数组字符串(eg.[{"ID":"112","Name":"石子儿"}])</param>
  69. /// <returns>对象实体集合</returns>
  70. public static List<T> DeserializeJsonToList<T>(string json) where T : class
  71. {
  72. JsonSerializer serializer = new JsonSerializer();
  73. StringReader sr = new StringReader(json);
  74. object o = serializer.Deserialize(new JsonTextReader(sr), typeof(List<T>));
  75. List<T> list = o as List<T>;
  76. return list;
  77. }
  78. /// <summary>
  79. /// 反序列化JSON到给定的匿名对象.
  80. /// </summary>
  81. /// <typeparam name="T">匿名对象类型</typeparam>
  82. /// <param name="json">json字符串</param>
  83. /// <param name="anonymousTypeObject">匿名对象</param>
  84. /// <returns>匿名对象</returns>
  85. public static T DeserializeAnonymousType<T>(string json, T anonymousTypeObject)
  86. {
  87. T t = JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject);
  88. return t;
  89. }
  90. }
  91. }