如何从数据库中获取json类型的响应?

时间:2017-04-06 20:35:45

标签: c# sql json

我与数据库建立了连接

public string Respond(string sqlExpression)
{           
    string connectionString = @"Data Source=***;Initial Catalog=***; 
    User Id=***;Password=***;";
    var kek = new List<List<string>>();
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        SqlCommand command = new SqlCommand(sqlExpression, connection);
        var reader = command.ExecuteReader();
        if (reader.HasRows)
        {
            while (reader.Read())
            {
                var a = new List<string>();
                for (int i = 0; i < reader.FieldCount; i++) 
                {
                    a.Add(reader.GetSqlString(i).ToString());
                }
                kek.Add(a); 
            }
        }
        reader.Close();
    }
    return kek.ToJSON();
}

这是查询返回的内容:database table  我从这种方法得到的是:json file

基本上,这是一个包含外部“[]”的json,里面有一个“[]”的bucn,其中有字段数据。虽然我想要的是获得带有字段名称(“名称”,“概要”,“详细信息”)和数据的json文件。 如何在不生成类的情况下执行此操作?

1 个答案:

答案 0 :(得分:0)

您应该使用System.Web.Script.Serialization.JavaScriptSerializer命名空间。您必须从数据库表中收集数据表。之后,您可以使用下面的命名空间转换为json;

public string ConvertDataTableToJson()
{
    DataTable dt = new DataTable();
    using (SqlConnection con = new SqlConnectionc(connectionString)
    {
        using (SqlCommand cmd = new SqlCommand(sqlExpression, con))
        {
            con.Open();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(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);
        }
    }
}

最后你会得到类似的东西

{"records":[
{
"Id": 1,
"Name": "Foo",
"Surname": "Bar"
}
]}