为什么在JavaScript中解析JSON时出错

为什么在JavaScript中解析JSON时出错,javascript,asp.net-mvc,json,asp.net-mvc-4,razor,Javascript,Asp.net Mvc,Json,Asp.net Mvc 4,Razor,在ViewBag的帮助下,我将JSON传递到razor视图页面 以下是操作函数中的代码: public ActionResult GmailOAuthCallback(string code) { object contacts = GmailServiceWorkflow.GetContacts(code); string json = new JavaScriptSerializer().Serialize(contacts);

在ViewBag的帮助下,我将JSON传递到razor视图页面

以下是操作函数中的代码:

    public ActionResult GmailOAuthCallback(string code)
    {
        object contacts = GmailServiceWorkflow.GetContacts(code);
        string json = new JavaScriptSerializer().Serialize(contacts);
        ViewBag.name = json;
        return View("SomeWindow");
    }
在razor视图页面,我想将JSON解析为对象

以下是查看razor页面中的代码:

function myFunction() {
        var arrObject = JSON.parse("@ViewBag.name");
        alert(arrObject[0].firstName);
        }  
但我得到了这个错误:

SyntaxError:JSON.parse:JSON数据第1行第3列的预期属性名或“}”


知道我为什么会出现此错误以及如何修复它吗?

与使用
JavaScriptSerializer
相比,您可以通过将集合传递给视图来实现这一点

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);
}  

该错误表示JSON数据无效。你的代码与此无关。Stephen谢谢你的回答,但我在Json下得到了红线(错误)。错误表明了什么?您的
web.config中可能缺少
file@Michael这只意味着您需要包含相关的名称空间,或者添加一个using语句和/或将System.Web.Helpers添加到Web.config(如Stephen所述)。是的,我知道我已经有了@using System.Web.Helpers,但是我得到了错误奇怪,对我来说很有用。脚本不在外部文件中,是吗?