【发布时间】:2017-02-27 20:39:08
【问题描述】:
我的应用分为两部分:客户端和服务器。 服务器端询问一个 sql 数据库并将结果存储在一个 DataTable 中。 然后我使用下一个函数将 DataTable 转换为 Json 以将其发送给客户端。
问题是当没有结果时,我得到一个空字符串。 我想得到一个字符串,它允许客户端显示一个空的数据表但带有列名,我的意思是带有列标题!
这是服务端将datatable转换为Json的函数:
public string ConvertDataTabletoString(DataTable dt)
{
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
serializer.MaxJsonLength = Int32.MaxValue;
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);
}
这是客户端将 Json 转换为 DataTable 的功能:
return (DataTable)JsonConvert.DeserializeObject(clientSoap.dataCommand(command), (typeof(DataTable)));
提前致谢!!
【问题讨论】:
-
试试 NewtonSoft dll。字符串 jsonString=string.Empty; jsonString = JsonConvert.SerializeObject(table);
-
我和@viveknuna 一起去。试试牛顿软件。它可以通过 NuGet 获得。你可以停止使用丑陋的 DataTables 并使用美妙的对象和 List
来制作整个东西 :) Newtonsoft Package 与它配合得很好。 -
@Sebi ,我在一小时前添加了它,但我真的不明白如何使用它。我从数据表中的数据库中获取结果,然后?
-
我的意思是没有改变使用它,在“没有行”的情况下我仍然得到一个空字符串
标签: c# json datatable server json.net