Javascript 如何解码JSON对象并对其进行迭代?

Javascript 如何解码JSON对象并对其进行迭代?,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,在本文中,我学习了如何在服务器端对对象进行编码,现在我想在客户端对其进行解码 在客户端,我是这样做的 $.ajax({ type: "GET", url: "/cgi-bin/ajax_sort.pl", contentType: "application/json; charset=utf-8", dataType: "json", data: { "column" : this.id }, error: function(XMLHttpRe

在本文中,我学习了如何在服务器端对对象进行编码,现在我想在客户端对其进行解码

在客户端,我是这样做的

$.ajax({
    type: "GET",
    url: "/cgi-bin/ajax_sort.pl",
    contentType: "application/json; charset=utf-8",
    dataType: "json",

    data: { "column" : this.id },

    error: function(XMLHttpRequest, textStatus, errorThrown) {
        showError('responseText: ' + XMLHttpRequest.responseText);
        showError('textStatus: ' + textStatus);
        showError('errorThrown: ' + errorThrown);
    },

    success: function(result){
        if (result.error) {
            showError(result.error);
        } else {

        var obj = jQuery.parseJSON(result);

        }
    }
});
问题

obj
现在是否包含解码的JSON数据

如果是这样,则服务器端的对象看起来像这样(从Perl的
数据::转储程序输出)

问题


如果
obj
确实包含解码的JSON,我如何迭代该对象?

result
已经是一个JSON对象-由jQuery解析,因为您指定了
数据类型:“JSON”
,所以不应该解析它

要查看数据,可以执行以下操作:

for(key in result){
    var curr = result[key];

    //iterate over owners    
     for(var i = 0; i < curr.owners.length; i++){
         alert(curr.owners[i]);
     }

    //iterate over users    
     for(var i = 0; i < curr.users.length; i++){
         alert(curr.users[i]);
     }

     alert(curr.data_end);
     alert(curr.title);

    //and so on...
}
for(输入结果){
var curr=结果[键];
//迭代所有者
对于(变量i=0;i
更新


我一直忘记了
$。每个()
,如您的答案所示-您可能希望改为使用它。

因为您指定了
数据类型:“json”
结果应该已经包含未从HTTP响应序列化的Javascript对象。应该没有必要

您可以通过以下方式循环:


您必须将AJAX请求的数据类型声明为JSON。jQuery将自动“解码”这个,并从中创建一个对象


您可以通过
alert(结果[127])立即访问数据

您可以使用对obj成员进行迭代


注意:您应该没有什么理由想要迭代JSON对象的成员。JSON是一种序列化格式,其中双方(客户端和服务器)都知道它的结构。如果您可以帮助传输什么数据,obj应该是其最外层范围内的一个数组。

Cool!=)如何访问users中的数组元素?如果您在
$中。每个
回调中,您应该循环使用
value.users
,或者使用
value.users[0]
获取第一个,等等。我建议您查看和类型的文档,并学习如何处理它们。
数据类型
非常有趣的一点。您编写的
结果将是一个JSON obejct。这与JavaScript对象相同吗?@Sandra JSON是一种基于JavaScript子集的数据格式,并使用JS中的对象文字符号,因此JSON是有效的JS。因此,是的,一旦解析,“JSON”对象实际上就是一个JS对象。我使用术语“JSON对象”表示该对象是通过解析JSON字符串创建的。
for(key in result){
    var curr = result[key];

    //iterate over owners    
     for(var i = 0; i < curr.owners.length; i++){
         alert(curr.owners[i]);
     }

    //iterate over users    
     for(var i = 0; i < curr.users.length; i++){
         alert(curr.users[i]);
     }

     alert(curr.data_end);
     alert(curr.title);

    //and so on...
}
success: function(result){
    if (result.error) {
        showError(result.error);
    } else {
        $.each(result, function(key, value) {
            alert(value.title).
        });
    }
}
for(var key in obj) {
    var value = obj[key];
    alert(key + "=" + value);
}