我正在尝试将数据作为普通的Json,从我的控制器发送到我的MVC应用程序的客户端。数据最初是作为对象列表收集的,但我无法将其转换为直接Json。现在我控制器中的代码如下:
[HttpGet]
public JsonResult SecurityPermissionsTableData()
{
List<SecurityPermissionsGridModel> list = securityPermissionsTable.Get(System.Security.Principal.WindowsIdentity.GetCurrent().Name.Split('\\').Last());
string json = JsonConvert.SerializeObject(new
{
data = list
});
return ResultJson(json);
}
public JsonResult ResultJson(object data)
{
return new JsonResult { JsonRequestBehavior = JsonRequestBehavior.AllowGet, Data = data };
}
当我使用JsonConvert.SerializeObject()函数时,它返回一个字符串:
"{\"data\":[{\"Username\":\"loganfg\",\"readbutton\":null,\"editbutton\":null,\"deletebutton\":null}]}"
但是我需要以以下形式返回普通的Json:
{"data":[{"Username":"lgilmore","readbutton":"<a onclick='SP_read(\"7\")' class='SRKbutton tiny SP_rbutton'>Details</a>","editbutton":null,"deletebutton":null}]}
如何将serialize函数返回的字符串转换为普通Json?或者我如何更改ResultJson()函数以正确处理和转换字符串?
答案 0 :(得分:5)
JsonResult
已为您序列化对象。
因此,它将字符串序列化为JSON字符串文字。
你应该摆脱所有代码,只需
return Json(list, JsonRequestBehaviour.AllowGet);
答案 1 :(得分:2)
您可以简单地使用Json
方法。
将要转换的对象传递给json作为参数。
public JsonResult SecurityPermissionsTableData()
{
var permissionList = securityPermissionsTable
.Get(System.Security.Principal.WindowsIdentity.GetCurrent()
.Name.Split('\\').Last());
return Json(permissionList , JsonRequestBehaviour.AllowGet);
}