2016-07-22 124 views
0

我试图从我的控制器发送数据为纯Json,到我的MVC应用程序的客户端。数据最初是作为对象列表收集的,但我无法将其转换为直接Json。现在在我的控制器代码如下:C#从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()函数来正确处理和转换字符串?

回答

2

您可以简单地使用Json方法。

将要转换的对象传递给json作为参数。

public JsonResult SecurityPermissionsTableData() 
{ 
    var permissionList = securityPermissionsTable 
       .Get(System.Security.Principal.WindowsIdentity.GetCurrent() 
       .Name.Split('\\').Last()); 
    return Json(permissionList , JsonRequestBehaviour.AllowGet); 
} 
+0

不Json的采取对象,而不是对象的列表?而我的代码是: 名单列表 不 变种名单 – Life761

+0

我应该更清楚,我需要在一个JSON数组的格式,而不是一个JSON对象 – Life761

+0

@ Life761它会返回一个数组如果'securityPermissionsTable.Get'方法返回一个集合。如果你传递一个单独的对象,它将返回一个单一结构的json。如果你传递一个数组,它将返回一个数组。 – Shyju

4

JsonResult已经为您序列化对象。
因此,它会将您的字符串序列化为JSON字符串文字。

你应该摆脱所有的代码和公正

return Json(list, JsonRequestBehaviour.AllowGet);