JsonExtensions.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Converters;
  3. using Newtonsoft.Json.Linq;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.ComponentModel;
  7. using System.Data;
  8. namespace WCS_Client
  9. {
  10. /// <summary>
  11. /// 扩展.json序列反序列化
  12. /// </summary>
  13. public static partial class JsonExtensions
  14. {
  15. /// <summary>
  16. /// 转成json对象
  17. /// </summary>
  18. /// <param name="Json">json字串</param>
  19. /// <returns></returns>
  20. public static object ToJson(this string Json)
  21. {
  22. return Json == null ? null : JsonConvert.DeserializeObject(Json);
  23. }
  24. /// <summary>
  25. /// 转成json字串
  26. /// </summary>
  27. /// <param name="obj">对象</param>
  28. /// <returns></returns>
  29. public static string ToJson(this object obj)
  30. {
  31. var timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };
  32. return JsonConvert.SerializeObject(obj, timeConverter);
  33. }
  34. /// <summary>
  35. /// 转成json字串
  36. /// </summary>
  37. /// <param name="obj">对象</param>
  38. /// <param name="datetimeformats">时间格式化</param>
  39. /// <returns></returns>
  40. public static string ToJson(this object obj, string datetimeformats)
  41. {
  42. var timeConverter = new IsoDateTimeConverter { DateTimeFormat = datetimeformats };
  43. return JsonConvert.SerializeObject(obj, timeConverter);
  44. }
  45. /// <summary>
  46. /// 字串反序列化成指定对象实体
  47. /// </summary>
  48. /// <typeparam name="T">实体类型</typeparam>
  49. /// <param name="Json">字串</param>
  50. /// <returns></returns>
  51. public static T ToObject<T>(this string Json)
  52. {
  53. return Json == null ? default(T) : JsonConvert.DeserializeObject<T>(Json);
  54. }
  55. /// <summary>
  56. /// 字串反序列化成指定对象实体(列表)
  57. /// </summary>
  58. /// <typeparam name="T">实体类型</typeparam>
  59. /// <param name="Json">字串</param>
  60. /// <returns></returns>
  61. public static List<T> ToList<T>(this string Json)
  62. {
  63. return Json == null ? null : JsonConvert.DeserializeObject<List<T>>(Json);
  64. }
  65. /// <summary>
  66. /// 字串反序列化成DataTable
  67. /// </summary>
  68. /// <param name="Json">字串</param>
  69. /// <returns></returns>
  70. public static DataTable ToTable(this string Json)
  71. {
  72. return Json == null ? null : JsonConvert.DeserializeObject<DataTable>(Json);
  73. }
  74. /// <summary>
  75. /// 字串反序列化成linq对象
  76. /// </summary>
  77. /// <param name="Json">字串</param>
  78. /// <returns></returns>
  79. public static JObject ToJObject(this string Json)
  80. {
  81. return Json == null ? JObject.Parse("{}") : JObject.Parse(Json.Replace("&nbsp;", ""));
  82. }
  83. public static DataTable GetAttributesDataTable(this object obj)
  84. {
  85. var tb = new DataTable(obj.GetType().Name);
  86. tb.Columns.Add("信号说明", typeof(string));
  87. tb.Columns.Add("信号名称", typeof(string));
  88. tb.Columns.Add("信号值", typeof(string));
  89. Type t = obj.GetType();
  90. //属性遍历
  91. foreach (System.Reflection.PropertyInfo pi in t.GetProperties())
  92. {
  93. AttributeCollection attributes = TypeDescriptor.GetProperties(t)[pi.Name].Attributes;
  94. DescriptionAttribute myAttribute = (DescriptionAttribute)attributes[typeof(DescriptionAttribute)];
  95. string describle = myAttribute.Description;
  96. string proname = pi.Name;
  97. var abc = pi.GetValue(obj, null);
  98. var values = new object[3];
  99. values[0] = describle;
  100. values[1] = proname;
  101. values[2] = abc;
  102. tb.Rows.Add(values);
  103. }
  104. return tb;
  105. }
  106. }
  107. }