C# 如何将数据表转换为Json格式?

C# 如何将数据表转换为Json格式?,c#,json,C#,Json,我正在尝试将从数据库获取的数据表转换为Json格式。但是我犯了一个错误 public string ConvertTableToJSON(DataTable objDataTable) { ArrayList columnNames = new ArrayList(); int rowCount = objDataTable.Rows.Count; int currentRow = 1; string json = "";

我正在尝试将从数据库获取的数据表转换为Json格式。但是我犯了一个错误

public string ConvertTableToJSON(DataTable objDataTable)
    {
        ArrayList columnNames = new ArrayList();
        int rowCount = objDataTable.Rows.Count;
        int currentRow = 1;

        string json = "";

        //fetching column names
        foreach (DataColumn objColumn in objDataTable.Columns)
        {
            columnNames.Add(objColumn.ColumnName);
        }

        //generating json string for each row
        foreach (DataRow objRow in objDataTable.Rows)
        {
            json = json + "{";
            json = json + ConvertRowToJSON(objRow, columnNames);
            json = json + "}";

            if (currentRow != rowCount)
            {
                json = json + ",";
            }

            currentRow = currentRow + 1;
        }

        return json;
    }
上面是将DataTable转换为Json格式的代码

“索引超出了数组的边界。”是调试代码时出现的错误。此错误发生在行中

if (data[0] == '[' || data[0] == '{')

此方法用于将datatable转换为json字符串

public string ConvertDataTabletoJSON(DataTable dt)
{

System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach (DataRow dr in dt.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
}
return serializer.Serialize(rows);
}
公共字符串ConvertDataTabletoJSON(DataTable dt)
{
System.Web.Script.Serialization.JavaScriptSerializer serializer=新的System.Web.Script.Serialization.JavaScriptSerializer();
列表行=新列表();
字典行;
foreach(数据行dr在dt.行中)
{
行=新字典();
foreach(dt.列中的数据列列列)
{
行添加(列名称,dr[col]);
}
行。添加(行);
}
返回序列化程序。序列化(行);
}

它使用
System.Web.Script.Serialization.JavaScriptSerializer
将内容序列化为
JSON
格式:

您可以使用以下代码使用JavaScriptSerializer将DataTable转换为JSON

public string DataTableToJsonWithJavaScriptSerializer(DataTable objDataTable)
{
 JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
 List<Dictionary<string, object>> parentRow = new List<Dictionary<string, object>>();
 Dictionary<string, object> childRow;
 foreach (DataRow row in objDataTable.Rows)
 {
 childRow = new Dictionary<string, object>();
 foreach (DataColumn col in table.Columns)
 {
 childRow.Add(col.ColumnName, row[col]);
 }
 parentRow.Add(childRow);
 }
 return jsSerializer.Serialize(parentRow);
}
包括图书馆

Json

public string DataTableToJsonWithJsonNet(DataTable objDataTable) 
{
   string jsonString=string.Empty;
   jsonString = JsonConvert.SerializeObject(objDataTable);
   return jsonString;
}