循环遍历 JSON 对象列表

IT技术 javascript jquery web-services json
2021-03-10 00:36:04

我从网络服务返回一个 List<> 作为 JSON 对象的 List。我正在尝试使用 for 循环遍历列表并从属性中获取值。这是返回 JSON 的示例:

{"d":[{"__type":"FluentWeb.DTO.EmployeeOrder",
 "EmployeeName":"Janet Leverling",
 "EmployeeTitle":"Sales Representative",
 "RequiredDate":"\/Date(839224800000)\/",
 "OrderedProducts":null}]}

所以我试图使用这样的东西提取内容:

function PrintResults(result) {

for (var i = 0; i < result.length; i++) { 
    alert(result.employeename);
}

这应该怎么做?

6个回答

小心,d是清单。

for (var i = 0; i < result.d.length; i++) { 
    alert(result.d[i].employeename);
}
这应该。那是对的。JavaScript 区分大小写。员工姓名
2021-04-23 00:36:04
谢谢.. 但这也不会返回任何东西。
2021-05-04 00:36:04

今天遇到了同样的问题,你的话题帮助了我,所以这里有解决方案;)

 alert(result.d[0].EmployeeTitle);
上面评论中的链接已死
2021-04-19 00:36:04
上面评论中的链接是不死的
2021-04-22 00:36:04
谢谢你。这也是我得出的结论。这是一篇很棒的帖子,其中详细介绍了解决方案。 优雅code.com/2009/05/04/jquery-ajax-with-class-arrays希望这对其他人有帮助。
2021-04-24 00:36:04
上面评论中的链接似乎重定向到了linkedin
2021-05-04 00:36:04

关闭了!试试这个:

for (var prop in result) {
    if (result.hasOwnProperty(prop)) {
        alert(result[prop]);
    }
}

更新:

如果您的结果确实是一个对象的数组,那么您可能必须这样做:

for (var prop in result[0]) {
    if (result[0].hasOwnProperty(prop)) {
        alert(result[0][prop]);
    }
}

或者,如果您想遍历数组中的每个结果(如果有更多结果),请尝试:

for (var i = 0; i < results.length; i++) {
    for (var prop in result[i]) {
        if (result[i].hasOwnProperty(prop)) {
            alert(result[i][prop]);
        }
    }
}
这让我离得更近了..它仍然只是用 [object Object],[object Object] 发出警报....
2021-04-22 00:36:04

这里是:

success: 
    function(data) {
        $.each(data, function(i, item){
            alert("Mine is " + i + "|" + item.title + "|" + item.key);
        });
    }

示例 JSON 文本:

{"title": "camp crowhouse", 
"key": "agtnZW90YWdkZXYyMXIKCxIEUG9zdBgUDA"}

由于您使用的是 jQuery,您不妨使用 each 方法……此外,在这个 JS 对象 [Notation] 中,似乎一切都是属性“d”的值。

$.each(result.d,function(i) {
    // In case there are several values in the array 'd'
    $.each(this,function(j) {
        // Apparently doesn't work...
        alert(this.EmployeeName);
        // What about this?
        alert(result.d[i][j]['EmployeeName']);
        // Or this?
        alert(result.d[i][j].EmployeeName);
    });
});

那应该有效。如果没有,那么也许您可以给我们提供一个更长的 JSON 示例。

编辑:如果这些东西都不起作用,那么我开始认为您的 JSON 语法可能有问题。

所以这非常非常接近。现在我正在遍历对象数组。在 FireBug 中,我可以看到属性中的值,但警报仅返回“未定义”。如何从属性中获取字符串、日期等?
2021-04-28 00:36:04
我很难找到解决方案(不是 JQuery)。我会尽快尝试这个。我宁愿按照你的方式去做。我会确保发布解决方案。
2021-05-17 00:36:04