JSONUtil.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Runtime.Serialization;
  4. using System.Runtime.Serialization.Json;
  5. using System.IO;
  6. using System.Text;
  7. using System.Reflection;
  8. namespace CP.Common
  9. {
  10. /// <summary>
  11. /// json操作类
  12. /// </summary>
  13. public class JSONUtil
  14. {
  15. /// <summary>
  16. /// object go json
  17. /// </summary>
  18. /// <param name="obj"></param>
  19. /// <returns></returns>
  20. public static string ObjectToJson(object obj)
  21. {
  22. DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
  23. MemoryStream stream = new MemoryStream();
  24. serializer.WriteObject(stream, obj);
  25. byte[] dataBytes = new byte[stream.Length];
  26. stream.Position = 0;
  27. stream.Read(dataBytes, 0, (int)stream.Length);
  28. return Encoding.UTF8.GetString(dataBytes);
  29. }
  30. /// <summary>
  31. /// json go object
  32. /// </summary>
  33. /// <param name="jsonString"></param>
  34. /// <param name="obj"></param>
  35. /// <returns></returns>
  36. public static object JsonToObject(string jsonString, object obj)
  37. {
  38. DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
  39. MemoryStream mStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
  40. return serializer.ReadObject(mStream);
  41. }
  42. /// <summary>
  43. /// 列表到json字串
  44. /// </summary>
  45. /// <typeparam name="T"></typeparam>
  46. /// <param name="jsonName"></param>
  47. /// <param name="IL"></param>
  48. /// <returns></returns>
  49. public static string ListToJson<T>(IList<T> IL)
  50. {
  51. StringBuilder Json = new StringBuilder();
  52. Json.Append("[");
  53. if (IL.Count > 0)
  54. {
  55. for (int i = 0; i < IL.Count; i++)
  56. {
  57. T obj = Activator.CreateInstance<T>();
  58. Type type = obj.GetType();
  59. PropertyInfo[] pis = type.GetProperties();
  60. Json.Append("{");
  61. for (int j = 0; j < pis.Length; j++)
  62. {
  63. Json.Append("\"" + pis[j].Name.ToString() + "\":\"" + pis[j].GetValue(IL[i], null) + "\"");
  64. if (j < pis.Length - 1)
  65. {
  66. Json.Append(",");
  67. }
  68. }
  69. Json.Append("}");
  70. if (i < IL.Count - 1)
  71. {
  72. Json.Append(",");
  73. }
  74. }
  75. }
  76. Json.Append("]");
  77. return Json.ToString();
  78. }
  79. /// <summary>
  80. /// T对像到json字串
  81. /// </summary>
  82. /// <typeparam name="T"></typeparam>
  83. /// <param name="t"></param>
  84. /// <returns></returns>
  85. public static string GetJSON<T>(T t)
  86. {
  87. string result = String.Empty;
  88. try
  89. {
  90. System.Runtime.Serialization.Json.DataContractJsonSerializer serializer =
  91. new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(T));
  92. using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
  93. {
  94. serializer.WriteObject(ms, t);
  95. result = System.Text.Encoding.UTF8.GetString(ms.ToArray());
  96. }
  97. }
  98. catch (Exception ex)
  99. {
  100. throw ex;
  101. }
  102. return result;
  103. }
  104. /// <summary>
  105. /// 把json还原为对象
  106. /// </summary>
  107. /// <typeparam name="T">对象类型</typeparam>
  108. /// <param name="jsonStr">json字符串</param>
  109. /// <returns>T 对象类型</returns>
  110. public static T ParseFormByJson<T>(string jsonStr)
  111. {
  112. T obj = Activator.CreateInstance<T>();
  113. using (System.IO.MemoryStream ms =
  114. new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(jsonStr)))
  115. {
  116. System.Runtime.Serialization.Json.DataContractJsonSerializer serializer =
  117. new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(T));
  118. return (T)serializer.ReadObject(ms);
  119. }
  120. }
  121. /// <summary>
  122. /// 把json还原为列表对象
  123. /// </summary>
  124. /// <typeparam name="T">对象类型</typeparam>
  125. /// <param name="jsonStr">json字符串</param>
  126. /// <returns>T 对象类型</returns>
  127. public static List<T> ParseFormByJsonList<T>(string jsonStr)
  128. {
  129. //T obj = Activator.CreateInstance<T>();
  130. using (System.IO.MemoryStream ms =
  131. new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(jsonStr)))
  132. {
  133. System.Runtime.Serialization.Json.DataContractJsonSerializer serializer =
  134. new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(List<T>));
  135. return (List<T>)serializer.ReadObject(ms);
  136. }
  137. }
  138. }
  139. }