本文共 5417 字,大约阅读时间需要 18 分钟。
1 ///2 /// Json帮助类 3 /// 4 public class JsonHelper 5 { 6 ///7 /// 将对象序列化为JSON格式 8 /// 9 /// 对象 10 ///json字符串 11 public static string SerializeObject(object o) 12 { 13 string json = JsonConvert.SerializeObject(o); 14 return json; 15 } 16 ///17 /// json 转换为object 18 /// 19 /// 20 ///21 public static object DeserializeObject(string json) 22 { 23 return JsonConvert.DeserializeObject(json); 24 } 25 /// 26 /// 将对象序列化为JSON格式 27 /// 28 /// 对象 29 ///json字符串 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 ///75 /// 解析JSON字符串生成对象实体 76 /// 77 ///对象类型 78 /// json字符串(eg.{"ID":"112","Name":"石子儿"}) 79 ///对象实体 80 public static T DeserializeJsonToObject(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 /// 90 /// 解析JSON数组生成对象实体集合 91 /// 92 ///对象类型 93 /// json数组字符串(eg.[{"ID":"112","Name":"石子儿"}]) 94 ///对象实体集合 95 public static ListDeserializeJsonToList (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 ));100 List list = o as List ;101 return list;102 }103 104 /// 105 /// 反序列化JSON到给定的匿名对象.106 /// 107 ///匿名对象类型 108 /// json字符串109 /// 匿名对象110 ///匿名对象 111 public static T DeserializeAnonymousType(string json, T anonymousTypeObject)112 {113 T t = JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject);114 return t;115 }116 117 #region dataTable转换成Json格式118 /// 119 /// dataTable转换成Json格式 120 /// 121 /// 122 ///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 /// 153 /// DataSet转换成Json格式 154 /// 155 /// DataSet 156 ///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 }
转载地址:http://cycxl.baihongyu.com/