繁体   English   中英

JavaScript json返回未定义

[英]Javascript json returning undefined

所以我试图通过for循环从json对象中获取一些数据,并且该数据一直返回未定义状态。 这是我的代码:

router.get('/', function(req, res, next) {
  request('https://api.instagram.com/v1/media/popular?client_id=############', function (error, response, body) {
    json = JSON.parse(body);
    var popular_tags = [];

    for (var key in json['data']){
      tag = JSON.stringify(key['tags'])
        popular_tags.push(tag)  
    }
    console.log(popular_tags)

    res.render('index', {title: body });
  });
});

这是我收到的输出:

[ undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined ]

但是,当我尝试

var popular_tags = [];
popular_tags.push(json['data'][0]['tags'])
console.log(popular_tags)

它将打印出我想要的内容。 有什么建议么?

将行更改为

tag = JSON.stringify(json['data'][key]['tags'])

当你说

for (var key in json['data'])

key是遍历对象json.data的属性名称,因此它是一个字符串 因此, key['tags'] undefined因为字符串通常没有属性tags 事情从那里滚雪球。

一般成语是:

for (var key in json.data) {
  if (json.data.hasOwnProperty(key) {
    var item = json.data[key];
    // ...
  }
}

hasOwnProperty可以防止有人在您要迭代的原型中注入某些东西。 例如,如果某人做了像Object.prototype.breakAllCode = true愚蠢的事情,则"breakAllCode"将显示为您要迭代的key

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM