JsonHandleHelper.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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. namespace NXWMS.Client.Code.Serialize
  9. {
  10. /// <summary>
  11. /// Json帮助类
  12. /// </summary>
  13. public static class JsonHandleHelper
  14. {
  15. private static JsonSerializerSettings jsonSerializerSetting = new JsonSerializerSettings()
  16. {
  17. ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver()
  18. {
  19. NamingStrategy = new Newtonsoft.Json.Serialization.SnakeCaseNamingStrategy()
  20. },
  21. NullValueHandling=NullValueHandling.Ignore
  22. };
  23. /// <summary>
  24. /// 将对象序列化为JSON格式
  25. /// </summary>
  26. /// <param name="o">对象</param>
  27. /// <returns>json字符串</returns>
  28. public static string SerializeObject(object o)
  29. {
  30. string json = JsonConvert.SerializeObject(o, jsonSerializerSetting);
  31. return json;
  32. }
  33. public static string SerializeObject1(object o)
  34. {
  35. JsonSerializerSettings jsonSerializerSetting11 = new JsonSerializerSettings()
  36. {
  37. ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver()
  38. {
  39. NamingStrategy = new Newtonsoft.Json.Serialization.DefaultNamingStrategy()
  40. },
  41. NullValueHandling = NullValueHandling.Ignore
  42. };
  43. string json = JsonConvert.SerializeObject(o, jsonSerializerSetting11);
  44. return json;
  45. }
  46. /// <summary>
  47. /// 解析JSON字符串生成对象实体
  48. /// </summary>
  49. /// <typeparam name="T">对象类型</typeparam>
  50. /// <param name="json">json字符串(eg.{"ID":"112","Name":"石子儿"})</param>
  51. /// <returns>对象实体</returns>
  52. public static T DeserializeJsonToObject<T>(string json) where T : class
  53. {
  54. return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(json, jsonSerializerSetting);
  55. //JsonSerializer serializer = new JsonSerializer();
  56. //StringReader sr = new StringReader(json);
  57. //object o = serializer.Deserialize(new JsonTextReader(sr), typeof(T));
  58. //T t = o as T;
  59. //return t;
  60. }
  61. /// <summary>
  62. /// 解析JSON字符串生成对象实体 第二种方法
  63. /// </summary>
  64. /// <typeparam name="T"></typeparam>
  65. /// <param name="json"></param>
  66. /// <returns></returns>
  67. public static T DeJsonSerializer<T>(string json)
  68. {
  69. if (json == null)
  70. {
  71. return default(T);
  72. }
  73. DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
  74. using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
  75. {
  76. object obj = ser.ReadObject(ms);
  77. ms.Close();
  78. if (obj == null)
  79. {
  80. throw new NotImplementedException("序列化实体为NULL,json:" + json);
  81. }
  82. return (T)obj;
  83. }
  84. }
  85. /// <summary>
  86. /// 解析JSON数组生成对象实体集合
  87. /// </summary>
  88. /// <typeparam name="T">对象类型</typeparam>
  89. /// <param name="json">json数组字符串(eg.[{"ID":"112","Name":"石子儿"}])</param>
  90. /// <returns>对象实体集合</returns>
  91. public static List<T> DeserializeJsonToList<T>(string json) where T : class
  92. {
  93. JsonSerializer serializer = new JsonSerializer();
  94. StringReader sr = new StringReader(json);
  95. object o = serializer.Deserialize(new JsonTextReader(sr), typeof(List<T>));
  96. List<T> list = o as List<T>;
  97. return list;
  98. }
  99. /// <summary>
  100. /// 反序列化JSON到给定的匿名对象.
  101. /// </summary>
  102. /// <typeparam name="T">匿名对象类型</typeparam>
  103. /// <param name="json">json字符串</param>
  104. /// <param name="anonymousTypeObject">匿名对象</param>
  105. /// <returns>匿名对象</returns>
  106. public static T DeserializeAnonymousType<T>(string json, T anonymousTypeObject)
  107. {
  108. T t = JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject);
  109. return t;
  110. }
  111. }
  112. }