2016-07-22 4 views
0

Я пытаюсь отправить данные как простые Json, от моего контроллера к клиентской стороне моего приложения MVC. Сначала данные собираются как список объектов, но у меня возникают проблемы с преобразованием его в прямой Json. Сейчас код в мой контроллер выглядит следующим образом:C# Returning Plain Json от MVC Controller

[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}]} 

Как преобразовать строку, функция сериализации возвращается к простому 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 взять объект, а не список объектов? И мой код: List Список не список вар – Life761

+0

Я должен был более ясно, мне это нужно в формате массива Json, а не объект Json – Life761

+0

@ Life761 Это будет возвращать массив, если метод 'securityPermissionsTable.Get' возвращает коллекцию. Если вы передадите один объект, он вернет json для одной структуры. Если вы передадите массив, он вернет массив. – Shyju

4

JsonResult уже сериализует объект для вас.
Следовательно, он сериализует строку в строковый литерал JSON.

Вы должны избавиться от всего вашего кода и просто

return Json(list, JsonRequestBehaviour.AllowGet); 
Смежные вопросы