zoukankan      html  css  js  c++  java
  • DataTable、Dataset转Json

    DataTable、Dataset转Json

    一、DataTable转Json

      public static string DataTableToJson1(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();
            }
    DataTable转Json

    二、Dataset转Json

          public static string Dataset2Json(DataSet ds)
            {
                StringBuilder json = new StringBuilder();
    
                foreach (DataTable dt in ds.Tables)
                {
                    json.Append("{"");
                    json.Append(dt.TableName);
                    json.Append("":");
                    json.Append(DataTable2Json(dt));
                    json.Append("}");
                } return json.ToString();
            }
    主方法
          public static string DataTableToJson2(DataTable dt)
            {
                StringBuilder Json = new StringBuilder();
                Json.Append("{"" + dt.TableName + "":[");
                if (dt.Rows.Count > 0)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        Json.Append("
    " + "{"device":" + "
    " + "{");
                        for (int j = 0; j < dt.Columns.Count; j++)
                        {
                            string columName = dt.Columns[j].ColumnName.ToString();
                            string columValue = dt.Rows[i][j].ToString();
                            if (j == 9)//"radios":{"wifiMAC":~~},
                                Json.Append(""radios":{"" + columName + "":"" + columValue + ""}");
                            else if (j == 10 || j == 11)//"partDetails":{"mainLogicBoardSerialNumber":~~, "batterySerialNumber":~~ }      
                            {
                                if (j == 10)
                                    Json.Append(""partDetails":{"" + columName + "":"" + columValue + """);
                                else
                                    Json.Append(""" + columName + "":"" + columValue + ""}}");
                            }
                            else if (j == 12)
                                Json.Append(""order":{"" + columName + "":"" + columValue + """);
                            else if (j == 16)
                                Json.Append(""" + columName + "":"" + columValue + ""}");
                            else
                                Json.Append(""" + columName + "":"" + columValue + """);
    
                            if (j < dt.Columns.Count - 1 )
                                Json.Append(",");
                        }
                        Json.Append("}");
                        if (i < dt.Rows.Count - 1)
                        {
                            Json.Append(",");
                        }
                    }
                }
                Json.Append("
    " + "]}");
                return Json.ToString();
            }
    调用方法 

    技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
    我创建了一个.NET开发交流群,用于分享学习心得和讨论相关技术难题。欢迎有兴趣的小伙伴扫码入群,相互学习!

  • 相关阅读:
    零是奇数还是偶数?
    解决TortoiseSVN中out of date问题的一个方法
    squid透明代理+iptables防火墙,多网卡详细配置
    基于协同过滤的推荐方法
    IP分片和TCP分片 MTU和MSS(转)
    Google Protocol Buffer 的使用和原理(转)
    到底多少线程算是线程数太多?
    开源软件53个相关概念
    GPL,LGPL和BSD等协议注意事项
    IEEE 802
  • 原文地址:https://www.cnblogs.com/wml-it/p/15079494.html
Copyright © 2011-2022 走看看