1 /// <summary> 2 /// Json帮助类 3 /// </summary> 4 public class JsonHelper 5 { 6 /// <summary> 7 /// 将对象序列化为JSON格式 8 /// </summary> 9 /// <param name="o">对象</param> 10 /// <returns>json字符串</returns> 11 public static string SerializeObject(object o) 12 { 13 string json = JsonConvert.SerializeObject(o); 14 return json; 15 } 16 /// <summary> 17 /// json 转换为object 18 /// </summary> 19 /// <param name="json"></param> 20 /// <returns></returns> 21 public static object DeserializeObject(string json) 22 { 23 return JsonConvert.DeserializeObject(json); 24 } 25 /// <summary> 26 /// 将对象序列化为JSON格式 27 /// </summary> 28 /// <param name="o">对象</param> 29 /// <returns>json字符串</returns> 30 public static string SerializeDatatable(DataTable dt) 31 { 32 //string json = JsonConvert.SerializeObject(dt, new DataTableConverter()); 33 //return json; 34 StringBuilder JsonString = new StringBuilder(); 35 //Exception Handling 36 if (dt != null && dt.Rows.Count > 0) 37 { 38 JsonString.Append("[ "); 39 for (int i = 0; i < dt.Rows.Count; i++) 40 { 41 JsonString.Append("{ "); 42 for (int j = 0; j < dt.Columns.Count; j++) 43 { 44 if (j < dt.Columns.Count - 1) 45 { 46 JsonString.Append(""" + dt.Columns[j].ColumnName.ToString() + "":" + """ + dt.Rows[i][j].ToString() + "","); 47 } 48 else if (j == dt.Columns.Count - 1) 49 { 50 JsonString.Append(""" + dt.Columns[j].ColumnName.ToString() + "":" + """ + dt.Rows[i][j].ToString() + """); 51 } 52 } 53 /*end Of String*/ 54 if (i == dt.Rows.Count - 1) 55 { 56 JsonString.Append("} "); 57 } 58 else 59 { 60 JsonString.Append("}, "); 61 } 62 } 63 JsonString.Append("]"); 64 return JsonString.ToString(); 65 } 66 else 67 { 68 return null; 69 } 70 } 71 72 73 74 /// <summary> 75 /// 解析JSON字符串生成对象实体 76 /// </summary> 77 /// <typeparam name="T">对象类型</typeparam> 78 /// <param name="json">json字符串(eg.{"ID":"112","Name":"石子儿"})</param> 79 /// <returns>对象实体</returns> 80 public static T DeserializeJsonToObject<T>(string json) where T : class 81 { 82 JsonSerializer serializer = new JsonSerializer(); 83 StringReader sr = new StringReader(json); 84 object o = serializer.Deserialize(new JsonTextReader(sr), typeof(T)); 85 T t = o as T; 86 return t; 87 } 88 89 /// <summary> 90 /// 解析JSON数组生成对象实体集合 91 /// </summary> 92 /// <typeparam name="T">对象类型</typeparam> 93 /// <param name="json">json数组字符串(eg.[{"ID":"112","Name":"石子儿"}])</param> 94 /// <returns>对象实体集合</returns> 95 public static List<T> DeserializeJsonToList<T>(string json) where T : class 96 { 97 JsonSerializer serializer = new JsonSerializer(); 98 StringReader sr = new StringReader(json); 99 object o = serializer.Deserialize(new JsonTextReader(sr), typeof(List<T>)); 100 List<T> list = o as List<T>; 101 return list; 102 } 103 104 /// <summary> 105 /// 反序列化JSON到给定的匿名对象. 106 /// </summary> 107 /// <typeparam name="T">匿名对象类型</typeparam> 108 /// <param name="json">json字符串</param> 109 /// <param name="anonymousTypeObject">匿名对象</param> 110 /// <returns>匿名对象</returns> 111 public static T DeserializeAnonymousType<T>(string json, T anonymousTypeObject) 112 { 113 T t = JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject); 114 return t; 115 } 116 117 #region dataTable转换成Json格式 118 /// <summary> 119 /// dataTable转换成Json格式 120 /// </summary> 121 /// <param name="dt"></param> 122 /// <returns></returns> 123 public static string DataTableToJson(DataTable dt) 124 { 125 StringBuilder jsonBuilder = new StringBuilder(); 126 jsonBuilder.Append("{""); 127 jsonBuilder.Append(dt.TableName.ToString()); 128 jsonBuilder.Append("":["); 129 for (int i = 0; i < dt.Rows.Count; i++) 130 { 131 jsonBuilder.Append("{"); 132 for (int j = 0; j < dt.Columns.Count; j++) 133 { 134 jsonBuilder.Append("""); 135 jsonBuilder.Append(dt.Columns[j].ColumnName); 136 jsonBuilder.Append("":""); 137 jsonBuilder.Append(dt.Rows[i][j].ToString()); 138 jsonBuilder.Append("","); 139 } 140 jsonBuilder.Remove(jsonBuilder.Length - 1, 1); 141 jsonBuilder.Append("},"); 142 } 143 jsonBuilder.Remove(jsonBuilder.Length - 1, 1); 144 jsonBuilder.Append("]"); 145 jsonBuilder.Append("}"); 146 return jsonBuilder.ToString(); 147 } 148 149 #endregion dataTable转换成Json格式 150 151 #region DataSet转换成Json格式 152 /// <summary> 153 /// DataSet转换成Json格式 154 /// </summary> 155 /// <param name="ds">DataSet</param> 156 /// <returns></returns> 157 public static string DataSetToJson(DataSet ds) 158 { 159 StringBuilder json = new StringBuilder(); 160 161 foreach (DataTable dt in ds.Tables) 162 { 163 json.Append("{""); 164 json.Append(dt.TableName); 165 json.Append("":"); 166 json.Append(DataTableToJson(dt)); 167 json.Append("}"); 168 } 169 return json.ToString(); 170 } 171 #endregion 172 }