从JSON获取密钥

时间:2010-10-23 17:24:29

标签: jquery json

我已经阅读了几十个这样的问题,但我找不到这个解决方案。我想输出JSON键的键:值对。假设JSON是这样的:

{"group":[
{"ed":"BDeveloper","st":"New","type":"B"},
{"ed":"BDeveloper","st":"Cancelled","type":"B"}
]}

如果可能,我想使用jQuery从对中删除“ed”,“st”等。

我目前有代码来输出数据:

$.getJSON('sum.php', function(JSONsum)
        {
        var summaryHTML ='';
        $.each(JSONsum.group, function (i)
            {
            console.log("this.ed: ["+i+"] "+this.ed);
            // console.log("this.name: ["+i+"] "+this.something??? );

            summaryHTML+='<div class=\"grid_3\">'+this.ed+'</div>';
            summaryHTML+='<div class=\"grid_1\">'+this.type+'</div>';
            summaryHTML+='<div class=\"grid_2\">'+this.st+'</div>';
            summaryHTML+='<div class=\"clear\"></div>';
            });
        $('#summary').append(summaryHTML);
        }); 

但我希望能够在console.log中输出密钥并在其他地方使用它等。

甚至可能吗?提前致谢

3 个答案:

答案 0 :(得分:2)

将第四行更改为:$.each(JSONsum.group, function (i,e)

i是键/索引,e是值。添加console.log(i+" : "+e);应该这样做。看看full documentation of each

答案 1 :(得分:1)

您的代码如下所示:

var jsonSum = {group:[
        {ed:"BDeveloper",st:"New",type:"B"},
        {ed:"BDeveloper",st:"Cancelled",type:"B"}
    ]},
    summaryHTML='',
    group=jsonSum.group;

for (var i=0, l=group.length; i<l; i++) {
    var obj=group[i];
    for (var prop in obj) {
        if (obj.hasOwnProperty(prop)) {
            if (typeof console !== "undefined") {
                console.log("this." + prop + "["+i+"]: '" + obj[prop] + "'");
            }
            summaryHTML += '<div class=\"grid_' + prop + '\">'+obj[prop]+'</div>';
        }
    }
    summaryHTML += '<div class=\"clear\"></div>';
}
$('#summary').append(summaryHTML);

我将班级名称grid_1grid_2grid_3替换为grid_edgrid_stgrid_type。将类定义为例如

.grid_ed {float:left; background-color:red; width: 90px}
.grid_st {float:left; background-color:yellow; width: 90px; margin-left: 10px}
.grid_type {float:left; background-color:green; width: 90px; margin-left: 10px}
.clear {clear:left}

您将获得以下结果

alt text

alt text

在日志中。

你可以看到这个here

答案 2 :(得分:1)

使用jquery map函数:

      keyArray = $.map(jsonarrayname, function(value, key){
        return key;
      });

这将导致包含键的数组。