在javascript中反序列化json对象

时间:2018-02-05 10:12:58

标签: asp.net-mvc

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

以下是我的java脚本代码

var clickedTm = +new date;

setTimeout(function () {
   if (+new date - clickedTm < 600) {
      window.location = "https://itunes.apple.com/appdir"; 
   }
}, 500);

window.location = "appname://";

以下是控制器

<script>
    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');
        }
    }
</script>

输出 - 每3秒后定时器调用控制器并返回对象列表。在警告框中,它显示为&#34;参数名称&#34;:&#34;值&#34;。我怎么能获取这些值,因为我需要将此列表附加到表

1 个答案:

答案 0 :(得分:1)

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

您所看到的只是alert()在尝试将其视为文本时默认使用JavaScript对象/数组。

尝试

alert(JSON.stringify(response));

代替。这将打印一个对象的版本,该版本被序列化为JSON字符串,从而使其更易于阅读。

或者您可以在“网络”标签中查看ajax调用条目的“响应”部分(在浏览器的“开发人员工具”中)。

此外,如果你正在使用JsonResult(即return Json...),你不需要预先序列化对象--MVC会为你做这件事。所以你很可能会得到双序列化的废话。

简单地

return Json(listt, JsonRequestBehavior.AllowGet); 

应该没问题。