在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 对象