zoukankan      html  css  js  c++  java
  • 将查询出来的数据集转化成JSON格式的类

    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(" ", "");
                }
                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 '':
                            sb.Append("\b");
                            break;
                        case 'f':
                            sb.Append("\f");
                            break;
                        case ' ':
                            sb.Append("\n");
                            break;
                        case ' ':
                            sb.Append("\r");
                            break;
                        case ' ':
                            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}

  • 相关阅读:
    Hibernate Tools-代码生成
    Java集合(二):List列表
    linux路由
    微软发布SQL Server on Linux
    微软Azure虚拟机备份服务在中国发布
    微软物联网平台再推新!
    微软宣布在Azure上支持更多的开放技术和选择
    2015年微软“十大”开源之举
    “云中论道”之——华山论剑 ,唯快不破:秘笈分享
    牛津计划折射2016年微软开源领域“大步走”
  • 原文地址:https://www.cnblogs.com/linling/p/3193923.html
Copyright © 2011-2022 走看看