您的位置:首页 > Web前端 > JavaScript

将查询出来的数据集转化成JSON格式的类

2013-07-17 16:15 309 查看
using System;

using System.Collections;

using System.Collections.Generic;

using System.Data;

using System.Globalization;

using System.Linq;

using System.Reflection;

using System.Text;

using System.Web;

namespace WikEasyUIDemo

{

/// <summary>

/// JSON帮助类

/// </summary>

public class JsonHelper

{

/// <summary>

/// 生成表单编辑赋值 JSON格式

/// </summary>

/// <param name="dt"></param>

/// <param name="displayCount"></param>

/// <returns></returns>

public static string CreateJsonOne(DataTable dt, bool displayCount)

{

StringBuilder JsonString = new StringBuilder();

//Exception Handling

if (dt != null && dt.Rows.Count > 0)

{

for (int i = 0; i < dt.Rows.Count; i++)

{

JsonString.Append("{ ");

for (int j = 0; j < dt.Columns.Count; j++)

{

if (j < dt.Columns.Count - 1)

{

JsonString.Append("ipt_" + dt.Columns[j].ColumnName.ToString().ToLower() + ":" + "\"" + dt.Rows[i][j].ToString() + "\",");

}

else if (j == dt.Columns.Count - 1)

{

JsonString.Append("ipt_" + dt.Columns[j].ColumnName.ToString().ToLower() + ":" + "\"" + dt.Rows[i][j].ToString() + "\"");

}

}

if (i == dt.Rows.Count - 1)

{

JsonString.Append("} ");

}

else

{

JsonString.Append("}, ");

}

}

return JsonString.ToString();

}

else

{

return null;

}

}

/// <summary>

/// 将DataTable中的数据转换成JSON格式

/// </summary>

/// <param name="dt">数据源DataTable</param>

/// <param name="displayCount">是否输出数据总条数</param>

/// <returns></returns>

public static string CreateJsonParameters(DataTable dt, bool displayCount)

{

return CreateJsonParameters(dt, displayCount, dt.Rows.Count);

}

/// <summary>

/// 将DataTable中的数据转换成JSON格式

/// </summary>

/// <param name="dt">数据源DataTable</param>

/// <returns></returns>

public static string CreateJsonParameters(DataTable dt)

{

return CreateJsonParameters(dt, true);

}

/// <summary>

/// 将DataTable中的数据转换成JSON格式

/// </summary>

/// <param name="dt">数据源DataTable</param>

/// <param name="displayCount">是否输出数据总条数</param>

/// <param name="totalcount">JSON中显示的数据总条数</param>

/// <returns></returns>

public static string CreateJsonParameters(DataTable dt, bool displayCount, int totalcount)

{

StringBuilder JsonString = new StringBuilder();

//Exception Handling

if (dt != null)

{

JsonString.Append("{ ");

JsonString.Append("\"rows\":[ ");

for (int i = 0; i < dt.Rows.Count; i++)

{

JsonString.Append("{ ");

for (int j = 0; j < dt.Columns.Count; j++)

{

if (j < dt.Columns.Count - 1)

{

//if (dt.Rows[i][j] == DBNull.Value) continue;

if (dt.Columns[j].DataType == typeof(bool))

{

JsonString.Append("\"JSON_" + dt.Columns[j].ColumnName.ToLower() + "\":" +

dt.Rows[i][j].ToString().ToLower() + ",");

}

else if (dt.Columns[j].DataType == typeof(string))

{

JsonString.Append("\"JSON_" + dt.Columns[j].ColumnName.ToLower() + "\":" + "\"" +

dt.Rows[i][j].ToString().Replace("\"", "\\\"") + "\",");

}

else

{

JsonString.Append("\"JSON_" + dt.Columns[j].ColumnName.ToLower() + "\":" + "\"" + dt.Rows[i][j] + "\",");

}

}

else if (j == dt.Columns.Count - 1)

{

//if (dt.Rows[i][j] == DBNull.Value) continue;

if (dt.Columns[j].DataType == typeof(bool))

{

JsonString.Append("\"JSON_" + dt.Columns[j].ColumnName.ToLower() + "\":" +

dt.Rows[i][j].ToString().ToLower());

}

else if (dt.Columns[j].DataType == typeof(string))

{

JsonString.Append("\"JSON_" + dt.Columns[j].ColumnName.ToLower() + "\":" + "\"" +

dt.Rows[i][j].ToString().Replace("\"", "\\\"") + "\"");

}

else

{

JsonString.Append("\"JSON_" + dt.Columns[j].ColumnName.ToLower() + "\":" + "\"" + dt.Rows[i][j] + "\"");

}

}

}

/*end Of String*/

if (i == dt.Rows.Count - 1)

{

JsonString.Append("} ");

}

else

{

JsonString.Append("}, ");

}

}

JsonString.Append("]");

if (displayCount)

{

JsonString.Append(",");

JsonString.Append("\"total\":");

JsonString.Append(totalcount);

}

JsonString.Append("}");

return JsonString.ToString().Replace("\n", "");

}

else

{

return null;

}

}

#region object 2 json

private static void WriteDataRow(StringBuilder sb, DataRow row)

{

sb.Append("{");

foreach (DataColumn column in row.Table.Columns)

{

sb.AppendFormat("\"{0}\":", column.ColumnName);

WriteValue(sb, row[column]);

sb.Append(",");

}

// Remove the trailing comma.

if (row.Table.Columns.Count > 0)

{

--sb.Length;

}

sb.Append("}");

}

private static void WriteDataSet(StringBuilder sb, DataSet ds)

{

sb.Append("{\"Tables\":{");

foreach (DataTable table in ds.Tables)

{

sb.AppendFormat("\"{0}\":", table.TableName);

WriteDataTable(sb, table);

sb.Append(",");

}

// Remove the trailing comma.

if (ds.Tables.Count > 0)

{

--sb.Length;

}

sb.Append("}}");

}

private static void WriteDataTable(StringBuilder sb, DataTable table)

{

sb.Append("{\"Rows\":[");

foreach (DataRow row in table.Rows)

{

WriteDataRow(sb, row);

sb.Append(",");

}

// Remove the trailing comma.

if (table.Rows.Count > 0)

{

--sb.Length;

}

sb.Append("]}");

}

private static void WriteEnumerable(StringBuilder sb, IEnumerable e)

{

bool hasItems = false;

sb.Append("[");

foreach (object val in e)

{

WriteValue(sb, val);

sb.Append(",");

hasItems = true;

}

// Remove the trailing comma.

if (hasItems)

{

--sb.Length;

}

sb.Append("]");

}

private static void WriteHashtable(StringBuilder sb, IDictionary e)

{

bool hasItems = false;

sb.Append("{");

foreach (string key in e.Keys)

{

sb.AppendFormat("\"{0}\":", key.ToLower());

WriteValue(sb, e[key]);

sb.Append(",");

hasItems = true;

}

// Remove the trailing comma.

if (hasItems)

{

--sb.Length;

}

sb.Append("}");

}

private static void WriteObject(StringBuilder sb, object o)

{

MemberInfo[] members = o.GetType().GetMembers(BindingFlags.Instance | BindingFlags.Public);

sb.Append("{");

bool hasMembers = false;

foreach (MemberInfo member in members)

{

bool hasValue = false;

object val = null;

if ((member.MemberType & MemberTypes.Field) == MemberTypes.Field)

{

FieldInfo field = (FieldInfo)member;

val = field.GetValue(o);

hasValue = true;

}

else if ((member.MemberType & MemberTypes.Property) == MemberTypes.Property)

{

PropertyInfo property = (PropertyInfo)member;

if (property.CanRead && property.GetIndexParameters().Length == 0)

{

val = property.GetValue(o, null);

hasValue = true;

}

}

if (hasValue)

{

sb.Append("\"");

sb.Append(member.Name);

sb.Append("\":");

WriteValue(sb, val);

sb.Append(",");

hasMembers = true;

}

}

if (hasMembers)

{

--sb.Length;

}

sb.Append("}");

}

private static void WriteString(StringBuilder sb, IEnumerable s)

{

sb.Append("\"");

foreach (char c in s)

{

switch (c)

{

case '\"':

sb.Append("\\\"");

break;

case '\\':

sb.Append("\\\\");

break;

case '\b':

sb.Append("\\b");

break;

case '\f':

sb.Append("\\f");

break;

case '\n':

sb.Append("\\n");

break;

case '\r':

sb.Append("\\r");

break;

case '\t':

sb.Append("\\t");

break;

default:

int i = c;

if (i < 32 || i > 127)

{

sb.AppendFormat("\\u{0:X04}", i);

}

else

{

sb.Append(c);

}

break;

}

}

sb.Append("\"");

}

public static void WriteValue(StringBuilder sb, object val)

{

if (val == null || val == DBNull.Value)

{

sb.Append("null");

}

else if (val is string || val is Guid)

{

WriteString(sb, val.ToString());

}

else if (val is bool)

{

sb.Append(val.ToString().ToLower());

}

else if (val is double ||

val is float ||

val is long ||

val is int ||

val is short ||

val is byte ||

val is decimal)

{

sb.AppendFormat(CultureInfo.InvariantCulture.NumberFormat, "{0}", val);

}

else if (val.GetType().IsEnum)

{

sb.Append((int)val);

}

else if (val is DateTime)

{

sb.Append("new Date(\"");

sb.Append(((DateTime)val).ToString("MMMM, d yyyy HH:mm:ss",

new CultureInfo("en-US", false).DateTimeFormat));

sb.Append("\")");

}

else if (val is DataSet)

{

WriteDataSet(sb, val as DataSet);

}

else if (val is DataTable)

{

WriteDataTable(sb, val as DataTable);

}

else if (val is DataRow)

{

WriteDataRow(sb, val as DataRow);

}

else if (val is Hashtable)

{

WriteHashtable(sb, val as Hashtable);

}

else if (val is IEnumerable)

{

WriteEnumerable(sb, val as IEnumerable);

}

else

{

WriteObject(sb, val);

}

}

/// <summary>

///

/// </summary>

/// <param name="o"></param>

/// <returns></returns>

public static string Convert2Json(object o)

{

StringBuilder sb = new StringBuilder();

WriteValue(sb, o);

return sb.ToString();

}

#endregion

}

}

查询最终结果:

{ "rows":[ { "JSON_id":"2","JSON_cardnumber":"5353435","JSON_username":"xixi","JSON_sex":"","JSON_tel":"4535345","JSON_address":"","JSON_jifen":"50","JSON_time":"2013-7-16 8:50:37","JSON_showhouse":"","JSON_remark":""} ],"total":1}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: