无法访问JSON对象

时间:2013-07-15 17:54:41

标签: javascript jquery asp.net-mvc razor

我正在使用asp mvc并将json对象返回给我的视图,而我似乎无法访问json中的任何属性。这是我的代码。

在我的模型中我有:

public string getJson()
{ 
    File a = new File();
    a.Name = "matt";
    a.Path = "c:/adsgadsg/sdagdsag";
    string json = new JavaScriptSerializer().Serialize(a);
    //json = "{\"Name\":\"matt\",\"Path\":\"c:/adsgadsg/sdagdsag\"}"   
    return json;
}

然后在我的javascript中我有:

function test() {
    var userRegion = '@Model.getJson()';
    var tmp = userRegion.Name;
    var tmp2 = userRegion[0].Name;
    alert(tmp);//undefined
    alert(tmp2);//undefined
}

我做错了什么?感谢。

修改 当我调试javascript时,我注意到'@ Model.getJson()';转换为一个奇怪的字符串,JSON.parse无法解析它。

 var userRegion = JSON.parse('{"Name":"matt","Path":"c:/adsgadsg/sdagdsag"}');

导致异常未捕获的SyntaxError:意外的令牌&

3 个答案:

答案 0 :(得分:1)

您应该首先将JSON字符串解析为Javascript对象。例如,使用Json2库可以安全地完成此操作。

更新:此外,您应该使用Html.Raw函数打印出JSON字符串,因为其他方式将是HTML编码(引号将变为& quot;等)。

您的代码应如下所示:

function test() {
    var userRegion = JSON.parse('@Html.Raw(Model.getJson())');
    var tmp = userRegion.Name;
    //var tmp2 = userRegion[0].Name; this one is not correct
    alert(tmp);//undefined
    //alert(tmp2);//undefined
}

答案 1 :(得分:0)

我非常确定alert(userRegion );返回undefined

Json无法序列化方法,您必须在模型类中的属性中移动此代码。

答案 2 :(得分:0)

我在MVC3中使用以下内容:var events = JsonConvert.DeserializeObject>(yourObject);这将把JSON字符串放在正确的字段中,然后我使用foreach循环来读取事件,希望这将指导您正确的方向。