C#中任意类型数据转成JSON格式数据输出
2010-07-15 11:08
816 查看
注:该文是以前所写,现在看来已经毫无意义了。当时还没接触过JSON.NET ,好像.NET 2.0中也没有自带的to json的相关方法。
Code:01./// <summary>
02./// List转成json
03./// </summary>
04./// <typeparam name="T"></typeparam>
05./// <param name="jsonName"></param>
06./// <param name="list"></param>
07./// <returns></returns>
08.public static string ListToJson<T>(IList<T> list, string jsonName)
09.{
10. StringBuilder Json = new StringBuilder();
11. if (string.IsNullOrEmpty(jsonName))
12. jsonName = list[0].GetType().Name;
13. Json.Append("{/"" + jsonName + "/":[");
14. if (list.Count > 0)
15. {
16. for (int i = 0; i < list.Count; i++)
17. {
18. T obj = Activator.CreateInstance<T>();
19. PropertyInfo[] pi = obj.GetType().GetProperties();
20. Json.Append("{");
21. for (int j = 0; j < pi.Length; j++)
22. {
23. Type type = pi[j].GetValue(list[i], null).GetType();
24. Json.Append("/"" + pi[j].Name.ToString() + "/":" + StringFormat(pi[j].GetValue(list[i], null).ToString(), type));
25.
26. if (j < pi.Length - 1)
27. {
28. Json.Append(",");
29. }
30. }
31. Json.Append("}");
32. if (i < list.Count - 1)
33. {
34. Json.Append(",");
35. }
36. }
37. }
38. Json.Append("]}");
39. return Json.ToString();
40.}
41.
42./// <summary>
43./// List转成json
44./// </summary>
45./// <typeparam name="T"></typeparam>
46./// <param name="list"></param>
47./// <returns></returns>
48.public static string ListToJson<T>(IList<T> list)
49.{
50. object obj = list[0];
51. return ListToJson<T>(list, obj.GetType().Name);
52.}
53.
54./// <summary>
55./// 对象转换为Json字符串
56./// </summary>
57./// <param name="jsonObject">对象</param>
58./// <returns>Json字符串</returns>
59.public static string ToJson(object jsonObject)
60.{
61. string jsonString = "{";
62. PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties();
63. for (int i = 0; i < propertyInfo.Length; i++)
64. {
65. object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, null);
66. string value = string.Empty;
67. if (objectValue is DateTime || objectValue is Guid || objectValue is TimeSpan)
68. {
69. value = "'" + objectValue.ToString() + "'";
70. }
71. else if (objectValue is string)
72. {
73. value = "'" + ToJson(objectValue.ToString()) + "'";
74. }
75. else if (objectValue is IEnumerable)
76. {
77. value = ToJson((IEnumerable)objectValue);
78. }
79. else
80. {
81. value = ToJson(objectValue.ToString());
82. }
83. jsonString += "/"" + ToJson(propertyInfo[i].Name) + "/":" + value + ",";
84. }
85. jsonString.Remove(jsonString.Length - 1, jsonString.Length);
86. return jsonString + "}";
87.}
88.
89./// <summary>
90./// 对象集合转换Json
91./// </summary>
92./// <param name="array">集合对象</param>
93./// <returns>Json字符串</returns>
94.public static string ToJson(IEnumerable array)
95.{
96. string jsonString = "[";
97. foreach (object item in array)
98. {
99. jsonString += ToJson(item) + ",";
100. }
101. jsonString.Remove(jsonString.Length - 1, jsonString.Length);
102. return jsonString + "]";
103.}
104.
105./// <summary>
106./// 普通集合转换Json
107./// </summary>
108./// <param name="array">集合对象</param>
109./// <returns>Json字符串</returns>
110.public static string ToArrayString(IEnumerable array)
111.{
112. string jsonString = "[";
113. foreach (object item in array)
114. {
115. jsonString = ToJson(item.ToString()) + ",";
116. }
117. jsonString.Remove(jsonString.Length - 1, jsonString.Length);
118. return jsonString + "]";
119.}
120.
121./// <summary>
122./// Datatable转换为Json
123./// </summary>
124./// <param name="table">Datatable对象</param>
125./// <returns>Json字符串</returns>
126.public static string ToJson(DataTable dt)
127.{
128. StringBuilder jsonString = new StringBuilder();
129. jsonString.Append("[");
130. DataRowCollection drc = dt.Rows;
131. for (int i = 0; i < drc.Count; i++)
132. {
133. jsonString.Append("{");
134. for (int j = 0; j < dt.Columns.Count; j++)
135. {
136. string strKey = dt.Columns[j].ColumnName;
137. string strValue = drc[i][j].ToString();
138. Type type = dt.Columns[j].DataType;
139. jsonString.Append("/"" + strKey + "/":");
140. strValue = StringFormat(strValue, type);
141. if (j < dt.Columns.Count - 1)
142. {
143. jsonString.Append(strValue + ",");
144. }
145. else
146. {
147. jsonString.Append(strValue);
148. }
149. }
150. jsonString.Append("},");
151. }
152. jsonString.Remove(jsonString.Length - 1, 1);
153. jsonString.Append("]");
154. return jsonString.ToString();
155.}
156.
157./// <summary>
158./// DataTable转成Json
159./// </summary>
160./// <param name="jsonName"></param>
161./// <param name="dt"></param>
162./// <returns></returns>
163.public static string ToJson(DataTable dt, string jsonName)
164.{
165. StringBuilder Json = new StringBuilder();
166. if (string.IsNullOrEmpty(jsonName))
167. jsonName = dt.TableName;
168. Json.Append("{/"" + jsonName + "/":[");
169. if (dt.Rows.Count > 0)
170. {
171. for (int i = 0; i < dt.Rows.Count; i++)
172. {
173. Json.Append("{");
174. for (int j = 0; j < dt.Columns.Count; j++)
175. {
176. Type type = dt.Rows[i][j].GetType();
177. Json.Append("/"" + dt.Columns[j].ColumnName.ToString() + "/":" + StringFormat(dt.Rows[i][j].ToString(), type));
178. if (j < dt.Columns.Count - 1)
179. {
180. Json.Append(",");
181. }
182. }
183. Json.Append("}");
184. if (i < dt.Rows.Count - 1)
185. {
186. Json.Append(",");
187. }
188. }
189. }
190. Json.Append("]}");
191. return Json.ToString();
192.}
193.
194./// <summary>
195./// DataReader转换为Json
196./// </summary>
197./// <param name="dataReader">DataReader对象</param>
198./// <returns>Json字符串</returns>
199.public static string ToJson(DbDataReader dataReader)
200.{
201. StringBuilder jsonString = new StringBuilder();
202. jsonString.Append("[");
203. while (dataReader.Read())
204. {
205. jsonString.Append("{");
206. for (int i = 0; i < dataReader.FieldCount; i++)
207. {
208. Type type = dataReader.GetFieldType(i);
209. string strKey = dataReader.GetName(i);
210. string strValue = dataReader[i].ToString();
211. jsonString.Append("/"" + strKey + "/":");
212. strValue = StringFormat(strValue, type);
213. if (i < dataReader.FieldCount - 1)
214. {
215. jsonString.Append(strValue + ",");
216. }
217. else
218. {
219. jsonString.Append(strValue);
220. }
221. }
222. jsonString.Append("},");
223. }
224. dataReader.Close();
225. jsonString.Remove(jsonString.Length - 1, 1);
226. jsonString.Append("]");
227. return jsonString.ToString();
228.}
229.
230./// <summary>
231./// DataSet转换为Json
232./// </summary>
233./// <param name="dataSet">DataSet对象</param>
234./// <returns>Json字符串</returns>
235.public static string ToJson(DataSet dataSet)
236.{
237. string jsonString = "{";
238. foreach (DataTable table in dataSet.Tables)
239. {
240. jsonString += "/"" + table.TableName + "/":" + ToJson(table) + ",";
241. }
242. jsonString = jsonString.TrimEnd(',');
243. return jsonString + "}";
244.}
245.
246./// <summary>
247./// 过滤特殊字符
248./// </summary>
249./// <param name="s"></param>
250./// <returns></returns>
251.private static string String2Json(String s)
252.{
253. StringBuilder sb = new StringBuilder();
254. for (int i = 0; i < s.Length; i++)
255. {
256. char c = s.ToCharArray()[i];
257. switch (c)
258. {
259. case '/"':
260. sb.Append("///""); break;
261. case '//':
262. sb.Append("////"); break;
263. case '/':
264. sb.Append("///"); break;
265. case '/b':
266. sb.Append("//b"); break;
267. case '/f':
268. sb.Append("//f"); break;
269. case '/n':
270. sb.Append("//n"); break;
271. case '/r':
272. sb.Append("//r"); break;
273. case '/t':
274. sb.Append("//t"); break;
275. default:
276. sb.Append(c); break;
277. }
278. }
279. return sb.ToString();
280.}
281.
282./// <summary>
283./// 格式化字符型、日期型、布尔型
284./// </summary>
285./// <param name="str"></param>
286./// <param name="type"></param>
287./// <returns></returns>
288.private static string StringFormat(string str, Type type)
289.{
290. if (type == typeof(string))
291. {
292. str = String2Json(str);
293. str = "/"" + str + "/"";
294. }
295. else if (type == typeof(DateTime))
296. {
297. str = "/"" + str + "/"";
298. }
299. else if (type == typeof(bool))
300. {
301. str = str.ToLower();
302. }
303. return str;
304.}
Code:01./// <summary>
02./// List转成json
03./// </summary>
04./// <typeparam name="T"></typeparam>
05./// <param name="jsonName"></param>
06./// <param name="list"></param>
07./// <returns></returns>
08.public static string ListToJson<T>(IList<T> list, string jsonName)
09.{
10. StringBuilder Json = new StringBuilder();
11. if (string.IsNullOrEmpty(jsonName))
12. jsonName = list[0].GetType().Name;
13. Json.Append("{/"" + jsonName + "/":[");
14. if (list.Count > 0)
15. {
16. for (int i = 0; i < list.Count; i++)
17. {
18. T obj = Activator.CreateInstance<T>();
19. PropertyInfo[] pi = obj.GetType().GetProperties();
20. Json.Append("{");
21. for (int j = 0; j < pi.Length; j++)
22. {
23. Type type = pi[j].GetValue(list[i], null).GetType();
24. Json.Append("/"" + pi[j].Name.ToString() + "/":" + StringFormat(pi[j].GetValue(list[i], null).ToString(), type));
25.
26. if (j < pi.Length - 1)
27. {
28. Json.Append(",");
29. }
30. }
31. Json.Append("}");
32. if (i < list.Count - 1)
33. {
34. Json.Append(",");
35. }
36. }
37. }
38. Json.Append("]}");
39. return Json.ToString();
40.}
41.
42./// <summary>
43./// List转成json
44./// </summary>
45./// <typeparam name="T"></typeparam>
46./// <param name="list"></param>
47./// <returns></returns>
48.public static string ListToJson<T>(IList<T> list)
49.{
50. object obj = list[0];
51. return ListToJson<T>(list, obj.GetType().Name);
52.}
53.
54./// <summary>
55./// 对象转换为Json字符串
56./// </summary>
57./// <param name="jsonObject">对象</param>
58./// <returns>Json字符串</returns>
59.public static string ToJson(object jsonObject)
60.{
61. string jsonString = "{";
62. PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties();
63. for (int i = 0; i < propertyInfo.Length; i++)
64. {
65. object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, null);
66. string value = string.Empty;
67. if (objectValue is DateTime || objectValue is Guid || objectValue is TimeSpan)
68. {
69. value = "'" + objectValue.ToString() + "'";
70. }
71. else if (objectValue is string)
72. {
73. value = "'" + ToJson(objectValue.ToString()) + "'";
74. }
75. else if (objectValue is IEnumerable)
76. {
77. value = ToJson((IEnumerable)objectValue);
78. }
79. else
80. {
81. value = ToJson(objectValue.ToString());
82. }
83. jsonString += "/"" + ToJson(propertyInfo[i].Name) + "/":" + value + ",";
84. }
85. jsonString.Remove(jsonString.Length - 1, jsonString.Length);
86. return jsonString + "}";
87.}
88.
89./// <summary>
90./// 对象集合转换Json
91./// </summary>
92./// <param name="array">集合对象</param>
93./// <returns>Json字符串</returns>
94.public static string ToJson(IEnumerable array)
95.{
96. string jsonString = "[";
97. foreach (object item in array)
98. {
99. jsonString += ToJson(item) + ",";
100. }
101. jsonString.Remove(jsonString.Length - 1, jsonString.Length);
102. return jsonString + "]";
103.}
104.
105./// <summary>
106./// 普通集合转换Json
107./// </summary>
108./// <param name="array">集合对象</param>
109./// <returns>Json字符串</returns>
110.public static string ToArrayString(IEnumerable array)
111.{
112. string jsonString = "[";
113. foreach (object item in array)
114. {
115. jsonString = ToJson(item.ToString()) + ",";
116. }
117. jsonString.Remove(jsonString.Length - 1, jsonString.Length);
118. return jsonString + "]";
119.}
120.
121./// <summary>
122./// Datatable转换为Json
123./// </summary>
124./// <param name="table">Datatable对象</param>
125./// <returns>Json字符串</returns>
126.public static string ToJson(DataTable dt)
127.{
128. StringBuilder jsonString = new StringBuilder();
129. jsonString.Append("[");
130. DataRowCollection drc = dt.Rows;
131. for (int i = 0; i < drc.Count; i++)
132. {
133. jsonString.Append("{");
134. for (int j = 0; j < dt.Columns.Count; j++)
135. {
136. string strKey = dt.Columns[j].ColumnName;
137. string strValue = drc[i][j].ToString();
138. Type type = dt.Columns[j].DataType;
139. jsonString.Append("/"" + strKey + "/":");
140. strValue = StringFormat(strValue, type);
141. if (j < dt.Columns.Count - 1)
142. {
143. jsonString.Append(strValue + ",");
144. }
145. else
146. {
147. jsonString.Append(strValue);
148. }
149. }
150. jsonString.Append("},");
151. }
152. jsonString.Remove(jsonString.Length - 1, 1);
153. jsonString.Append("]");
154. return jsonString.ToString();
155.}
156.
157./// <summary>
158./// DataTable转成Json
159./// </summary>
160./// <param name="jsonName"></param>
161./// <param name="dt"></param>
162./// <returns></returns>
163.public static string ToJson(DataTable dt, string jsonName)
164.{
165. StringBuilder Json = new StringBuilder();
166. if (string.IsNullOrEmpty(jsonName))
167. jsonName = dt.TableName;
168. Json.Append("{/"" + jsonName + "/":[");
169. if (dt.Rows.Count > 0)
170. {
171. for (int i = 0; i < dt.Rows.Count; i++)
172. {
173. Json.Append("{");
174. for (int j = 0; j < dt.Columns.Count; j++)
175. {
176. Type type = dt.Rows[i][j].GetType();
177. Json.Append("/"" + dt.Columns[j].ColumnName.ToString() + "/":" + StringFormat(dt.Rows[i][j].ToString(), type));
178. if (j < dt.Columns.Count - 1)
179. {
180. Json.Append(",");
181. }
182. }
183. Json.Append("}");
184. if (i < dt.Rows.Count - 1)
185. {
186. Json.Append(",");
187. }
188. }
189. }
190. Json.Append("]}");
191. return Json.ToString();
192.}
193.
194./// <summary>
195./// DataReader转换为Json
196./// </summary>
197./// <param name="dataReader">DataReader对象</param>
198./// <returns>Json字符串</returns>
199.public static string ToJson(DbDataReader dataReader)
200.{
201. StringBuilder jsonString = new StringBuilder();
202. jsonString.Append("[");
203. while (dataReader.Read())
204. {
205. jsonString.Append("{");
206. for (int i = 0; i < dataReader.FieldCount; i++)
207. {
208. Type type = dataReader.GetFieldType(i);
209. string strKey = dataReader.GetName(i);
210. string strValue = dataReader[i].ToString();
211. jsonString.Append("/"" + strKey + "/":");
212. strValue = StringFormat(strValue, type);
213. if (i < dataReader.FieldCount - 1)
214. {
215. jsonString.Append(strValue + ",");
216. }
217. else
218. {
219. jsonString.Append(strValue);
220. }
221. }
222. jsonString.Append("},");
223. }
224. dataReader.Close();
225. jsonString.Remove(jsonString.Length - 1, 1);
226. jsonString.Append("]");
227. return jsonString.ToString();
228.}
229.
230./// <summary>
231./// DataSet转换为Json
232./// </summary>
233./// <param name="dataSet">DataSet对象</param>
234./// <returns>Json字符串</returns>
235.public static string ToJson(DataSet dataSet)
236.{
237. string jsonString = "{";
238. foreach (DataTable table in dataSet.Tables)
239. {
240. jsonString += "/"" + table.TableName + "/":" + ToJson(table) + ",";
241. }
242. jsonString = jsonString.TrimEnd(',');
243. return jsonString + "}";
244.}
245.
246./// <summary>
247./// 过滤特殊字符
248./// </summary>
249./// <param name="s"></param>
250./// <returns></returns>
251.private static string String2Json(String s)
252.{
253. StringBuilder sb = new StringBuilder();
254. for (int i = 0; i < s.Length; i++)
255. {
256. char c = s.ToCharArray()[i];
257. switch (c)
258. {
259. case '/"':
260. sb.Append("///""); break;
261. case '//':
262. sb.Append("////"); break;
263. case '/':
264. sb.Append("///"); break;
265. case '/b':
266. sb.Append("//b"); break;
267. case '/f':
268. sb.Append("//f"); break;
269. case '/n':
270. sb.Append("//n"); break;
271. case '/r':
272. sb.Append("//r"); break;
273. case '/t':
274. sb.Append("//t"); break;
275. default:
276. sb.Append(c); break;
277. }
278. }
279. return sb.ToString();
280.}
281.
282./// <summary>
283./// 格式化字符型、日期型、布尔型
284./// </summary>
285./// <param name="str"></param>
286./// <param name="type"></param>
287./// <returns></returns>
288.private static string StringFormat(string str, Type type)
289.{
290. if (type == typeof(string))
291. {
292. str = String2Json(str);
293. str = "/"" + str + "/"";
294. }
295. else if (type == typeof(DateTime))
296. {
297. str = "/"" + str + "/"";
298. }
299. else if (type == typeof(bool))
300. {
301. str = str.ToLower();
302. }
303. return str;
304.}
相关文章推荐
- C#实现任意数据类型转成json格式输出
- C#中任意类型数据转成JSON格式数据输出
- 实用C#中任意类型数据转成JSON格式数据输出
- 实用C#中任意类型数据转成JSON格式数据输出
- C#将任意类型数据转成JSON格式输出的类
- C#中任意类型数据转成JSON格式数据输出
- 实用C#中任意类型数据转成JSON格式数据输出
- C# 任意类型数据转JSON格式
- C#中任意类型数据转成JSON格式
- C#中任意类型数据转成JSON格式
- C# 任意类型数据转JSON格式
- C# 任意类型数据转JSON格式
- C# 任意类型数据转JSON格式(转)
- C# 任意类型数据转JSON格式
- C# 任意类型数据转JSON格式
- 如何将一个List<Map<String,String>>类型的集合数据转换成json格式输出
- 最简单的c#处理程序输出json格式数据
- C#中把任意类型的泛型集合转换成SQLXML数据格式的实例
- C# 解析JSON数据格式 Mono 源码
- Web Api 输出Json格式数据,中文要进行Unicode编码(模拟PHP的json_encode输出)