C#,VB代码中DataTable转json,xml字符串

2 篇文章 0 订阅

C#
1.DataTable转json
自制一个DataTable,并填充内容

using System;
using System.Data;
using System.Text;

namespace ConsoleCTest
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            //设置表的结构
            dt.Columns.Add(new DataColumn("id", typeof(int)));
            dt.Columns.Add(new DataColumn("name", typeof(string)));
            dt.Columns.Add(new DataColumn("sex", typeof(string)));
            dt.Columns.Add(new DataColumn("age", typeof(string)));
            //赋值
            dt.Rows.Add(dt.NewRow());
            dt.Rows[0]["id"] = 1;
            dt.Rows[0]["name"] = "小红";
            dt.Rows[0]["sex"] = "女";
            dt.Rows[0]["age"] = "20";
            dt.Rows.Add(dt.NewRow());
            dt.Rows[1]["id"] = 2;
            dt.Rows[1]["name"] = "小明";
            dt.Rows[1]["sex"] = "男";
            dt.Rows[1]["age"] = "25";
            dt.Rows.Add(dt.NewRow());
            dt.Rows[2]["id"] = 3;
            dt.Rows[2]["name"] = "小李";
            dt.Rows[2]["sex"] = "男";
            dt.Rows[2]["age"] = "22";

            Console.Write(table2json(dt));
            Console.Read();
        }
		/*
            返回结果样式如下:
            [
                {
                    "columnName1":"value1",
                    "columnName2":"value2",
                    "columnName3":"value3",
                },
                {
                    "columnName1":"value4",
                    "columnName2":"value5",
                    "columnName3":"value6",
                },
                {
                    "columnName1":"value7",
                    "columnName2":"value8",
                    "columnName3":"value9",
                }
            ]
        */
        public static string table2json(DataTable dt)
        {
            StringBuilder sb = new StringBuilder("[");
            for(int i = 0; i < dt.Rows.Count; i++)
            {
                sb.Append("{");
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    if (j == dt.Columns.Count - 1)
                    {
                        sb.Append("\""+dt.Columns[j].Caption + "\":\"" + dt.Rows[i][j].ToString()+"\"");
                    }
                    else
                    {
                        sb.Append("\"" + dt.Columns[j].Caption + "\":\"" + dt.Rows[i][j].ToString()+"\",");
                    }

                }
                if (i == dt.Rows.Count - 1)
                {
                    sb.Append("}");
                }
                else
                {
                    sb.Append("},");
                }
            }
            sb.Append("]");
            return sb.ToString();
        }
    }
}

控制台查看结果,可复制到相关json格式化网站格式化这些字符串,推荐https://tool.oschina.net/codeformat/json
在这里插入图片描述
DataTable就不浪费篇幅去做了,后面直接给出table2xml以及vb的相关代码

		public static string table2xml(DataTable dt)
        {
            StringBuilder sb = new StringBuilder("");
            sb.Append("<xml>");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                sb.Append("<data>");
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    sb.Append("<" + dt.Columns[j].Caption + ">" + dt.Rows[i][j].ToString() + "</" + dt.Columns[j].Caption + ">");
                }
                sb.Append("</data>");
            }
            sb.Append("</xml>");
            return sb.ToString();
        }

在这里插入图片描述
VB

	Sub Main()
        Dim dt As DataTable = New DataTable()
        dt.Columns.Add(New DataColumn("id", Type.GetType("System.Int32")))
        dt.Columns.Add(New DataColumn("name", Type.GetType("System.String")))
        dt.Columns.Add(New DataColumn("sex", Type.GetType("System.String")))
        dt.Columns.Add(New DataColumn("age", Type.GetType("System.String")))
        dt.Rows.Add(dt.NewRow())
        dt.Rows(0)("id") = 1
        dt.Rows(0)("name") = "小红"
        dt.Rows(0)("sex") = "女"
        dt.Rows(0)("age") = 15
        dt.Rows.Add(dt.NewRow())
        dt.Rows(1)("id") = 2
        dt.Rows(1)("name") = "小明"
        dt.Rows(1)("sex") = "男"
        dt.Rows(1)("age") = 22
        dt.Rows.Add(dt.NewRow())
        dt.Rows(2)("id") = 3
        dt.Rows(2)("name") = "小编"
        dt.Rows(2)("sex") = "女"
        dt.Rows(2)("age") = 20

        Console.Write(table2xml(dt))
        Console.Read()
    End Sub

    Public Function table2json(dt As DataTable) As String
        Dim sb As StringBuilder = New StringBuilder("")
        sb.Append("[")
        For i = 0 To dt.Rows.Count - 1
            sb.Append("{")
            For j = 0 To dt.Columns.Count - 1
                If j = dt.Columns.Count - 1 Then
                    sb.Append("""" + dt.Columns(j).Caption + """:""" + dt.Rows(i)(j).ToString() + """")
                Else
                    sb.Append("""" + dt.Columns(j).Caption + """:""" + dt.Rows(i)(j).ToString() + """,")
                End If
            Next

            If i = dt.Rows.Count - 1 Then
                sb.Append("}")
            Else
                sb.Append("},")
            End If
        Next
        sb.Append("]")

        Return sb.ToString()
    End Function

    Public Function table2xml(dt As DataTable) As String
        Dim sb As StringBuilder = New StringBuilder("")
        sb.Append("<xml>")
        For i = 0 To dt.Rows.Count - 1
            sb.Append("<data>")
            For j = 0 To dt.Columns.Count - 1
                sb.Append("<" + dt.Columns(j).Caption + ">" + dt.Rows(i)(j).ToString() + "</" + dt.Columns(j).Caption + ">")
            Next
            sb.Append("</data>")
        Next
        sb.Append("</xml>")
        Return sb.ToString()
    End Function

结果展示:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值