我正在尝试使用ajax和C#webmethod定义aoColumns。我正在对待它与使用List>传递服务器端数据的方式非常类似。我添加List行的数据结构。我的问题是,这会产生如下字符串:
{\"aoColumns\":[[\"\\\"bVisible\\\": False\"],[\"\\\"bVisible\\\": True\"],[\"\\\"bVisible\\\": True\"],[\"\\\"bVisible\\\": True\"],[\"\\\"bVisible\\\": True\"],[\"\\\"bVisible\\\": True\"],[\"\\\"bVisible\\\": True\"],[\"\\\"bVisible\\\": True\"]]}
这几乎是正确的,除了列定义使用方括号而不是{}
。我将如何生成正确的JSON文本?非常感谢任何帮助!
答案 0 :(得分:1)
我假设您正在使用http://www.datatables.net/中的数据表。如果我错了,请纠正我。
如果您在创建JSON字符串以返回AJAX调用或将其转换为服务器端可用的内容时,我不确定是否理解。
如果要在Web方法中创建JSON字符串,我建议使用Dictionary类型,因为它们非常接近JSON字符串。要将Dictionary类型转换为JSON字符串,请使用:
var dictionary = new Dictionary<string, string>()
// add values here...
return new JavaScriptSerializer().Serialize(dictionary);
如果要将JSON字符串转换为Dictionary对象,请使用:
var dictionary = new JavaScriptSerializer().Deserialize<Dictionary<string, string>>(jsonString);
我喜欢做的另一件事是将字典转换为数组,如果我要使用任何键或值,因为当你不知道你想要的确切键值时,从字典中获取它们会很麻烦与之合作。
作为参考,JavaScriptSerializer是System.Web.Script.Serialization.JavaScriptSerializer命名空间和System.Web.Extensions程序集中的一部分。