我在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"
}
我添加了一个新行,以显示包含数据库中两行的不同数据,最后在数据上附加了附加信息,这是上面显示的最后一行。
我希望有更好的方法然后手动构建字符串。
感谢。
答案 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
答案 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步。