2011-06-17 77 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程序集中的一部分。