2013-09-27 113 views
0

我正在使用帶有asp.net的wdcalendar。從數據庫中獲取記錄後,我需要返回一個JSON字符串返回到頁面。我有一個包含從數據庫中的記錄,但我不知道如何將它轉換爲這個確切格式的數據表:從DataTable在C#中創建Json

{ 
    "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" 
} 

我添加了一個新的生產線,以顯示其中包含從數據庫中兩行不同的數據然後在最後有附加到數據的附加信息,這是上面顯示的最後一行。

我希望有一個更好的方法,然後手動建立字符串。

謝謝。

回答

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/

2

使用此,

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()); 
+0

+ 1 for JSON.Net –

+0

您的方法是將列名稱添加到最終字符串中。還有缺少最後一行。 – user1253073

+0

它的工作,你使用這個後有什麼問題? –