关于asp.net mvc:在javascript中反序列化json对象

deserialize json object in javascript

我正在开发ASP.NET MVC应用程序,Java脚本将调用控制器每3秒,它应该返回JSON对象的列表。我需要显示表中的对象列表。在这里,我得到[对象对象]。如果我们反序列化这些对象,如果是,那么如何反序列化它们。

下面是我的Java脚本代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    var fun = set_Interval(my_Timer, 3000);
    function my_Timer() {      
        $.ajax({          
            url: '@Url.Action("FirstAjax","Home")',
            //data: '{param :"value"}',
            contentType:"application/json; charset=utf-8",
            dataType:"json",
            success: successFunc,
            error: errorFunc
        });
        function successFunc(response) {
            alert(response);    
        }
        function errorFunc() {            
            alert('error');
        }
    }

以下是控制器

1
2
3
4
5
6
7
public JsonResult FirstAjax()
{            
    var listt = AlgoLegsClass.DataGridAlgos;
    JavaScriptSerializer js = new JavaScriptSerializer();
    string ss =  js.Serialize(listt);
    return Json(ss, JsonRequestBehavior.AllowGet);
}

输出-计时器每3秒调用一次控制器,并返回对象列表。在警报框中,它显示为"参数名":"值"。如何获取这些值,因为我需要将此列表附加到表中


由于您在Ajax选项中指定了dataType:"json",jquery已经自动将JSON字符串反序列化为javascript对象。

您所看到的只是alert()在默认情况下对JavaScript对象/数组所做的操作,当您试图使它们以文本形式显示时。

尝试

1
alert(JSON.stringify(response));

相反。这将打印对象的一个版本,该版本被串行化为JSON字符串,从而使其更具可读性。

或者,您可以在网络选项卡(浏览器的开发人员工具)中查看Ajax调用条目的响应部分。

另外,如果您使用的是jsonresult(即return Json...),则无需事先对对象进行序列化—MVC将为您进行序列化。所以很有可能你得到了两个系列化的胡说八道。

简单地

1
return Json(listt, JsonRequestBehavior.AllowGet);

应该没问题。