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
每件事到最后都是好事,如果不是好事,说明还没有到最后
=========================
作者:keepnode
博客地址:http://www.cnblogs.com/woaic
每件事到最后都是好事,如果不是好事,说明还没有到最后
=========================