我已经阅读了几十个这样的问题,但我找不到这个解决方案。我想输出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中输出密钥并在其他地方使用它等。
甚至可能吗?提前致谢
答案 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_1
,grid_2
,grid_3
替换为grid_ed
,grid_st
,grid_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}
您将获得以下结果
和
在日志中。
你可以看到这个here。
答案 2 :(得分:1)
使用jquery map函数:
keyArray = $.map(jsonarrayname, function(value, key){
return key;
});
这将导致包含键的数组。