将JSON转换并绑定到asp.net gridview

时间:2014-04-24 21:55:29

标签: c# asp.net json gridview web

我有以下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的格式。任何想法?

2 个答案:

答案 0 :(得分:4)

我这样解决:

第一步:下载JSON.net

第二步:

在你的CS页面

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事件渲染数据时使用代码隐藏方法来格式化我的数据。