在javascript中反序列化json对象

Posted

技术标签:

【中文标题】在javascript中反序列化json对象【英文标题】:deserialize json object in javascript 【发布时间】: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 秒后,计时器调用控制器并返回对象列表。在警报框中,它显示为“参数名称”:“值”。我如何获取这些值,因为我需要附加此列表到表

【问题讨论】:

【参考方案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 包含员工列表。现在我们需要在警报框中一一显示所有员工详细信息。

以上是关于在javascript中反序列化json对象的主要内容,如果未能解决你的问题,请参考以下文章

使用 Newtonsoft Json 从流中反序列化多个 json 对象

如何在 C# 中反序列化多个 JSON 对象?

使用 LitJson 在 C# 中反序列化 JSON 对象数组 [重复]

如何在 C# .NET 中反序列化复杂的 JSON 对象?

如何从实体框架中存在数据模型的json中反序列化对象?

在 Objective C 中反序列化 JSON 字符串