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); |
应该没问题。
- 我已经按照您上面指定的方式更改了我的代码,我得到的输出是["参数1":"值"、"参数2":"值"、"参数3":"值"]。
- 好啊。它是有效的JSON,所以这很好。你希望看到什么?我不知道你的listt变量中有什么。
- 我的列表包含员工列表,我需要一个接一个地获取所有员工的详细信息,包括姓名、工资等字段。
- 好吧,但是对你的对象的描述对任何人都不好,一个员工列表可以有100个不同的结构。显示DataGridAlgos的数据类型和/或运行代码时此对象中包含的实际值的定义。
- class employee name set;get;id set;get;salary get;set;。DataGridGos包含员工列表。现在我们需要在警报框中逐个显示所有员工详细信息。
- 那么,DataGridAlgos的定义就像AlgoLegsClass对象中的public List DataGridAlgos { get; set; }一样?因为如果是这样的话,我看不到你的JSON最终会像那样连续化。它的真正定义是什么?你所说的"清单"到底是什么意思?
- public static listdatagidalgos=new list();employee emp1=new employee();emp1.id=1;emp1.name="abc";emp1.salary=2000;datagidalgos.add(emp1);这样我在列表中添加员工详细信息
- 请参阅dotnetfiddle.net/usqydh-我不知道您描述的代码如何产生您提到的结果。很明显,你描述的东西有误,或者遗漏了一些重要的细节。
- 同样的方法,我得到了相同的输出,但是我需要得到一个参数,就像我们在C中得到的那样.forEach(列表中的var item)字符串名称=item.name;
- 请告诉我如何分别获取每个参数
- 你不知道如何用javascript编写一个for循环吗?您得到的是一个包含一些对象的javascript数组。google如何循环遍历对象数组,以及如何显示对象的特定属性。例如stackoverflow.com/a/40416380/5947043就是一个简单的例子。还有成百上千的人,单是在这个网站上,根本不在乎其他网站。
- 数组的here-length属性不存在,因此无法遍历循环
- 再次查看jsfiddle:dotnetfidle.net/usqydh。看不到您的代码,所以我不知道您做错了什么,但也许您不知道如何编写for循环。我举了个例子,不太复杂。这里有一个使用forEach的替代方法:dotnetfiddle.net/ydcpnr
- 是的,它起作用了。真的非常感谢Adyson