2011-06-17 72 views
2

我想使用ajax和C#webmethod定義aoColumns。我對它的處理非常類似於我如何傳遞服務器端數據,使用List>數據結構來添加List的行。我的問題是,這會導致類似的字符串:從服務器獲取自定義aoColumns的定義

{\"aoColumns\":[[\"\\\"bVisible\\\": False\"],[\"\\\"bVisible\\\": True\"],[\"\\\"bVisible\\\": True\"],[\"\\\"bVisible\\\": True\"],[\"\\\"bVisible\\\": True\"],[\"\\\"bVisible\\\": True\"],[\"\\\"bVisible\\\": True\"],[\"\\\"bVisible\\\": True\"]]} 

這幾乎是正確的,除了列定義正在使用的,而不是{}方括號。我將如何去生成正確的JSON文本?任何幫助是極大的讚賞!

+1

如何在您的示例中獲得此文本? – muratgu

回答

1

我假設你正在使用來自http://www.datatables.net/的數據表。如果我錯了,請糾正我。

我不確定我是否理解創建JSON字符串以返回到AJAX調用或將其轉換爲服務器端可用的東西時遇到問題。

如果您要在Web方法中創建JSON字符串,我會建議使用Dictionary類型,因爲它們非常接近JSON字符串。要將字典類型轉換成JSON字符串,使用:

var dictionary = new Dictionary<string, string>() 
// add values here... 
return new JavaScriptSerializer().Serialize(dictionary); 

如果要轉換一個JSON字符串轉換成字典對象,使用這樣的:

var dictionary = new JavaScriptSerializer().Deserialize<Dictionary<string, string>>(jsonString); 

我喜歡做的是轉換的另一件事將字典轉換爲數組,如果我要處理任何鍵或值,因爲當您不知道要使用的確切鍵值時,從字典中獲取它們可能會很痛苦。

作爲參考,JavaScriptSerializer是System.Web.Script.Serialization.JavaScriptSerializer命名空間和System.Web.Extensions程序集中的一部分。