Javascript json返回未定义
Javascript json returning undefined
所以我试图通过for in循环从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
。
相关文章:
- 这.SOMETHING 总是返回未定义的 - extjs
- React+Meteor:this.ops返回未定义
- "日期“;AJAX请求返回的类型值未定义
- Regex提取URL返回数组的一部分;未定义”;
- 换行符拆分返回“”;未定义”;
- 解析-为什么user.getSessionToken()返回未定义的结果
- Javascript函数返回未定义
- JavaScript-获取数据属性的值返回未定义的值
- .val()返回未定义的.text返回随机代码
- 为什么innerHTML返回“未定义”
- "这个“;正在返回未定义的
- 函数jquery的未定义返回
- 为什么typeof的数组的数组的未定义值返回为“0”;未定义的“;我的条件不认为是真的
- winJS 从函数未定义返回 var
- $.get jquery 中的未定义返回
- Javascript 函数未定义返回
- 数据 ID 一直未定义返回
- 函数调用Javascritpt的未定义返回值
- 在函数中提示未定义返回.(问题)范围
- JSON字符串的未定义返回