为JsonResult MVC将JS函数序列化为JSON
本文关键字:序列化 JSON 函数 JsonResult MVC JS | 更新日期: 2023-09-27 18:17:58
我正在为SlickGrid编写一个后端。我有一个AJAX调用,从MVC控制器加载列定义。控制器看起来像这样:
Public ActionResult GetColumns(...){
List<object> columns;
foreach(var col in MyColumns){
columns.Add(new { id = col.id, name = col.name, width = col.width});
}
return Json(new { columns = columns });
}
slickgrid接受的列属性之一是formatter,它接受一个js函数名。
不幸的是,MVC将该名称放在双引号中。我需要弄清楚是否有一种方法可以只序列化一个不带引号的字段。
(这是我想要的)[{"id":1,"Name":"FirstName","width":50,"formatter":NameFormater},...]
vs(这是我现在得到的)
[{"id":1,"Name":"FirstName","width":50,"formatter":"NameFormater"},...]
我知道这不是正确的JSON格式传递JS代码(正确的JS格式虽然)。但是我在这里有一个有效的用例,我试图不增加太多的复杂性。
您可以用特殊字符(如
)包装单词NameFormater[{"id":1,"Name":"FirstName","width":50,"formatter":"#NameFormater#"},...]
当你得到你的结果回来,如果你使用javascript
function(result){
result = result .replace(/"#/g, "");
result = result .replace(/#"/g, "");
// result now = [{"id":1,"Name":"FirstName","width":50,"formatter":NameFormater},...]
// ...Pass result to SlickGrid
}