从DataTable在C#中创建Json

时间:2013-09-27 04:59:01

标签: c# asp.net json

我在asp.net中使用wdcalendar。从数据库中获取记录后,我需要将JSON字符串返回给页面。我有DataTable,其中包含来自数据库的记录,但我不知道如何将其转换为这种格式:

{ 
  "end" : "09/29/2013 23:59",
  "error" : null,
  "events" : [ [ 1,
        "test",
        "09/26/2013 08:11",
        "09/26/2013 08:08",
        0,
        0,
        0,
        "1",
        1,
        "loca",
        ""
      ],
      [ 2,
        "test2",
        "09/27/2013 08:11",
        "09/27/2013 08:08",
        0,
        0,
        0,
        "1",
        1,
        "loca",
        ""
      ]
    ],
  "issort" : true,
  "start" : "09/23/2013 00:00"
}

我添加了一个新行,以显示包含数据库中两行的不同数据,最后在数据上附加了附加信息,这是上面显示的最后一行。

我希望有更好的方法然后手动构建字符串。

感谢。

3 个答案:

答案 0 :(得分:2)

试试这个

 public class RootObject
 {
public string end { get; set; }
public object error { get; set; }
public List<List<object>> events { get; set; }
public bool issort { get; set; }
public string start { get; set; }
}

创建一个对象并设置属性......您将获得所有细节,然后将其放入数据表...

   Copy paste your json string it will generate the class 

http://json2csharp.com/

答案 1 :(得分:1)

使用此,

public string GetJson(DataTable 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 = null;

    foreach (DataRow dr in dt.Rows)
    {
        row = new Dictionary<string, object>();
        foreach (DataColumn col in dt.Columns)
        {
            row.Add(col.ColumnName.Trim(), dr[col]);
        }
        rows.Add(row);
    }
    return serializer.Serialize(rows);
}

或使用JSON.NET

string json = JsonConvert.SerializeObject(table, new Serialization.DataTableConverter());
var o = JsonConvert.DeserializeObject<DataTable>(json, new Serialization.DataTableConverter());

答案 2 :(得分:0)

如果它是微软的AJAX extensions for .NET 2.0,它会帮助你说服你的老板安装一个库吗?

其中包含System.Web.Script.Serialization.JavascriptSerializer,用于帖子中last link的第4步。