我有一个名为data的对象,它存储URL。如果我解析(数据) resolve(data.url),它返回{url:.},但是当我时,它返回未定义的。
我将进一步阐述:-
request(options, function(error, response, data) {
if (error) return reject(error);
console.log('data --->', data); //returns {"url": "abc.com"}
console.log('data.url --->', data.url); //returns undefined
return resolve(data);
});如果我能知道问题背后的原因,那就太好了,因为我无法弄清楚。谢谢
发布于 2019-11-20 06:52:00
我打赌data实际上是一个字符串"{"url": "abc.com"}",而不是一个对象。
您应该使用类似于data = JSON.parse(data)的方法将其转换为对象。
或者,如果您想增强代码的健壮性,那么使用data = parse(data),其中:
function parse(str) {
try {
return JSON.parse(str);
}
catch (error) {
return {};
}
}发布于 2019-11-20 06:52:19
您必须在检查数据类型后解析它。来自API的data是string类型的,您要从string访问属性,而这个属性并不存在。
request(options, function(error, response, data) {
if (error) return reject(error);
if(typeof(data) == "string"){
data = JSON.parse(data);
}
console.log('data --->', data); //returns {"url": "abc.com"}
console.log('data.url --->', data.url); //returns undefined
return resolve(data);
});https://stackoverflow.com/questions/58948296
复制相似问题