2016-07-22 228 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); 
相關問題