2014-11-01 71 views
0

我使用ViewBag幫助將JSON傳遞到剃鬚刀視圖頁面。爲什麼我在嘗試解析JavaScript中的JSON時遇到錯誤

這裏是在動功能的代碼:

public ActionResult GmailOAuthCallback(string code) 
    { 
     object contacts = GmailServiceWorkflow.GetContacts(code); 
     string json = new JavaScriptSerializer().Serialize(contacts); 
     ViewBag.name = json; 
     return View("SomeWindow"); 
    } 

當時我想解析JSON對象的Razor視圖頁面。

這是鑑於剃刀頁面的代碼:

function myFunction() { 
     var arrObject = JSON.parse("@ViewBag.name"); 
     alert(arrObject[0].firstName); 
     } 

但我得到這個錯誤:

語法錯誤:JSON.parse:預計屬性名稱或 '}' 在第1行的第3列JSON數據

任何想法,爲什麼我得到這個錯誤,以及如何解決它?

+0

錯誤達致這指出JSON數據是無效的。你的代碼與此無關。 – vrijdenker 2014-11-01 22:45:42

回答

2

比使用JavaScriptSerializer相反,你CA通過收集傳遞給視圖

public ActionResult GmailOAuthCallback(string code) 
{ 
    object contacts = GmailServiceWorkflow.GetContacts(code); 
    ViewBag.name = contacts ; 
    return View("SomeWindow"); 
} 

然後在腳本

function myFunction() { 
    var arrObject = JSON.parse('@Html.Raw(Json.Encode(ViewBag.name))'); 
    alert(arrObject[0].firstName); 
} 
+0

斯蒂芬感謝您的答案,但我得到紅線(錯誤)在Json下。 – Michael 2014-11-01 23:16:45

+0

錯誤表示什麼?你可能會在你的'web.config'文件中缺少'' – 2014-11-01 23:26:31

+0

@Michael這意味着你需要包含相關的命名空間,[System.Web.Helpers](http ://msdn.microsoft.com/en-us/library/system.web.helpers.json.encode%28v=vs.111%29.aspx),並添加一個using語句和/或添加System.Web 。幫助web.config(正如斯蒂芬所說)。 – 2014-11-01 23:27:22

相關問題