我与数据库建立了连接
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文件。 如何在不生成类的情况下执行此操作?
答案 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"
}
]}