我有以下JSON
[{"time":"11:28","message":"user1: hi"},{"time":"11:28","message":"user2: hi to you"}]
使用C#从数据库表中序列化非常容易。 我使用以下函数来序列化
public String ConvertDataTableTojSonString(DataTable dataTable)
{
System.Web.Script.Serialization.JavaScriptSerializer serializer =
new System.Web.Script.Serialization.JavaScriptSerializer();
List<Dictionary<String, Object>> tableRows = new List<Dictionary<String, Object>>();
Dictionary<String, Object> row;
foreach (DataRow dr in dataTable.Rows)
{
row = new Dictionary<String, Object>();
foreach (DataColumn col in dataTable.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
tableRows.Add(row);
}
return serializer.Serialize(tableRows);
}
我认为它本身可能是JSON中的一些错误,但我在http://jsonlint.org/测试了它并且它是有效的 然而,我尝试并搜索了很多,将其转换回任何可以绑定到asp.net gridview的格式。任何想法?
答案 0 :(得分:4)
我这样解决:
第一步:下载JSON.net
第二步:
using Newtonsoft.Json;
public DataTable DerializeDataTable()
{
string json = data; //"data" should contain your JSON
var table = JsonConvert.DeserializeObject<DataTable>(json);
return table;
}
现在将该函数用作gridview的数据源
protected void btn1_Click(object sender, EventArgs e)
{
GridView1.DataSource = DerializeDataTable();
GridView1.DataBind();
}
希望这会有所帮助
答案 1 :(得分:1)
请参阅this question,了解如何将JSON代码转换为DataSet对象(可与GridView对象很好地配合使用)。
从那里,您可以将GridView的DataSource属性分配给转换后的DataSet,然后运行DataBind()方法。
我个人更喜欢在实际使用模板和RowDataBound事件渲染数据时使用代码隐藏方法来格式化我的数据。