JsonHelper

在网上找的比较全的json应用的类库。包含:DataTable转换Json,List 转换 Json,Model 转换 Json。下面说下Json的优势。 JSON的优点:  1、基于纯文本,跨平台传递极其简单; 2、Javascript原生支持,后台语言几乎全部支持; 3、轻量级数据格式,占用字符数量极少,特别适合互联网传递; 4、可读性较强,虽然比不上XML那么一目了然,但在合理的依次缩进之后还是很容易识别的; 5、容易编写和解析,当然前提是你要知道数据结构; 下面直接贴代码: [code lang="CSharp"] public class JsonHandler { /// <summary> /// DataTable转成Json /// </summary> /// <param name="jsonName">Json名</param> /// <param name="dt">table数据</param> /// <returns></returns> public static string DataTableToJson(string jsonName, DataTable dt) { StringBuilder Json = new StringBuilder(); Json.Append("{\"" + jsonName + "\":["); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { Json.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":\"" + dt.Rows[i][j].ToString() + "\""); if (j < dt.Columns.Count - 1) { Json.Append(","); } } Json.Append("}"); if (i < dt.Rows.Count - 1) { Json.Append(","); } } } Json.Append("]}"); return Json.ToString(); } /// <summary> /// DataTable转成Json /// </summary> /// <param name="dt">table数据</param> { /// <returns></returns> public static string DataTableToJson(DataTable dt) StringBuilder Json = new StringBuilder(); Json.Append("["); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { Json.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":\"" + dt.Rows[i][j].ToString() + "\""); if (j < dt.Columns.Count - 1) { Json.Append(","); } } Json.Append("}"); if (i < dt.Rows.Count - 1) { Json.Append(","); } } } Json.Append("]"); return Json.ToString(); } /// <summary> /// List转成json /// </summary> /// <typeparam name="T">数据类型</typeparam> /// <param name="jsonName">Json名</param> /// <param name="IL">数列</param> /// <returns></returns> public static string ObjectToJson<T>(string jsonName, IList<T> IL) { StringBuilder Json = new StringBuilder(); Json.Append("{\"" + jsonName + "\":["); if (IL.Count > 0) { for (int i = 0; i < IL.Count; i++) { T obj = Activator.CreateInstance<T>(); Type type = obj.GetType(); PropertyInfo[] pis = type.GetProperties(); Json.Append("{"); for (int j = 0; j < pis.Length; j++) { Json.Append("\"" + pis[j].Name.ToString() + "\":\"" + pis[j].GetValue(IL[i], null) + "\""); if (j < pis.Length - 1) { Json.Append(","); } } Json.Append("}"); if (i < IL.Count - 1) { Json.Append(","); } } } Json.Append("]}"); return Json.ToString(); } /// <summary> /// List转成json /// </summary> /// <typeparam name="T">数据类型</typeparam> /// <param name="IL">数列</param> /// <returns></returns> public static string ObjectToJson<T>(IList<T> IL) { StringBuilder Json = new StringBuilder(); Json.Append("["); if (IL.Count > 0) { for (int i = 0; i < IL.Count; i++) { T obj = Activator.CreateInstance<T>(); Type type = obj.GetType(); PropertyInfo[] pis = type.GetProperties(); Json.Append("{"); for (int j = 0; j < pis.Length; j++) { Json.Append("\"" + pis[j].Name.ToString() + "\":\"" + pis[j].GetValue(IL[i], null) + "\""); if (j < pis.Length - 1) { Json.Append(","); } } Json.Append("}"); if (i < IL.Count - 1) { Json.Append(","); } } } Json.Append("]"); return Json.ToString(); } /// <summary> /// Model 转换为Json /// </summary> /// <typeparam name="T">数据类型</typeparam> /// <param name="obj">数据对象</param> /// <returns></returns> public static string ObjectToJson<T>(T o) { StringBuilder Json = new StringBuilder(); T obj = Activator.CreateInstance<T>(); Type type = obj.GetType(); PropertyInfo[] Pi = type.GetProperties(); Json.Append("{"); for (int i = 0; i < Pi.Length; i++) { Json.Append("\"" + Pi[i].Name.ToString() + "\":\"" + Pi[i].GetValue(o, null) + "\""); if (i < Pi.Length - 1) { Json.Append(","); } } Json.Append("}"); return Json.ToString(); } } [/code]
写个博客不容易,请转载的时候备注下原文出处,谢谢
作者:keepnode
博客地址:http://www.cnblogs.com/woaic
每件事到最后都是好事,如果不是好事,说明还没有到最后
=========================
原文地址:https://www.cnblogs.com/woaic/p/3942801.html