Asp.net

如何將 JsonResult 對像作為字元串獲取以便我可以修改它?

  • March 11, 2010

我正在使用 FlexiGrid jQuery 外掛,我需要從我的 MVC 應用程序中獲取一個 JSON 對象,如果 FlexiGrid 只獲取該對象,這很簡單,但我需要在響應字元串中添加一些項目,以便它與 FlexiGrid 一起正常工作.

所以這是我的控制器程式碼的一部分:

If Request.QueryString("json") IsNot Nothing Then
   Dim data As New StringBuilder()
   data.Append("page: " & pageIndex & "," & vbCrLf)
   data.Append("total: " & ViewData.TotalCount & "," & vbCrLf)
   data.Append("rows: ")
   data.Append(Json(objCustomerList))

   Return Content(data.ToString())
End If

不幸的是,在上面的程式碼中Json(objCustomerList)返回 ‘System.Web.MVV.JsonResult’ 而不是所需的 JSON 字元串數據。我也試著Json(objCustomerList).ToString()看看會發生什麼,同樣的事情再次發生。

有任何想法嗎?

Json()ASP.NET MVC 中的方法只是通過JavaScriptSerializer類使用JsonResult類。如果您想使用 JSON 將 objCustomerList 對象序列化為字元串,您可以自己使用它。

我的建議是採取稍微不同的方法。

  • 創建一個表示您嘗試創建的 JavaScript 對象的 .NET 等效項的模型。可能是具有 Page、Total、Rows 和 CustomerList 屬性的 FlexiGridModel 對象。
  • 然後,當您將 FlexiGridModel 傳遞給Json()它時,它就可以工作,無需使用StringBuilder.

如果您只是希望您的程式碼能夠正常工作,那麼有一個覆蓋JavaScriptSerializer.Serialize()可以將對象序列化StringBuilder並將結果附加到。這應該正是您正在尋找的。

一些相關連結:

你也可以這樣做:

JsonResult json = ... ;
JavaScriptSerializer serializer = new JavaScriptSerializer();
string yourJsonResult = serializer.Serialize(json.Data);

就這麼簡單:D

編輯:程式碼高亮

引用自:https://stackoverflow.com/questions/313281