【问题标题】:deserialize json object in javascript在javascript中反序列化json对象
【发布时间】:2018-07-15 03:58:32
【问题描述】:

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

下面是我的java脚本代码


<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>

下面是控制器

public JsonResult FirstAjax()
{            
    var listt = AlgoLegsClass.DataGridAlgos;
    JavaScriptSerializer js = new JavaScriptSerializer();
    string ss =  js.Serialize(listt);
    return Json(ss, JsonRequestBehavior.AllowGet);
}

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

【问题讨论】:

    标签: javascript jquery json ajax asp.net-mvc


    【解决方案1】:

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

    您所看到的正是alert() 在尝试将 JavaScript 对象/数组默认设置为文本时所做的操作。

    试试

    alert(JSON.stringify(response));
    

    相反。这将打印您的对象的一个​​版本,该版本被序列化回 JSON 字符串,从而使其更具人类可读性。

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

    此外,如果您使用的是 JsonResult(即return Json...),则无需事先序列化对象 - MVC 会为您完成。所以你很可能会得到双重序列化的废话。

    简单

    return Json(listt, JsonRequestBehavior.AllowGet); 
    

    应该没问题。

    【讨论】:

    • 我已经按照您上面指定的方式更改了我的代码,我得到的输出为 [{"parameter _1":"value","parameter_2":"value","parameter_3":"value"} ].
    • 好的。好吧,它是有效的 JSON,所以很好。你期待看到什么?我不知道你的 listt 变量中有什么。
    • 我的列表包含员工列表,我需要一一获取所有员工的详细信息以及他们的姓名,薪水等字段。
    • 好的,但是对您的对象的描述对任何人都没有好处,员工列表可能有 100 种不同的结构。显示 DataGridAlgos 的数据类型的定义,和/或在您运行代码时包含在此对象中的实际值。
    • 类员工{姓名{set;get;} ID {set;get;}薪水{get;set;}。 DataGridAlgos 包含员工列表。现在我们需要在警报框中一一显示所有员工详细信息。
    猜你喜欢
    • 2016-12-30
    • 1970-01-01
    • 2011-09-23
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 2013-10-22
    • 1970-01-01
    相关资源
    最近更新 更多