请求承诺 returns 未定义但存在
request-promise returns undefined but exists
正在尝试通过请求承诺执行请求,但无法正常工作。
查看下面的评论。
有人可以给我解释一下这个 PiA 吗?
提前致谢
var todayOptions = { uri: `http://mlb.mlb.com/gdcross/components/game/mlb/year_${year}/month_${month}/day_${day}/master_scoreboard.json`,
simple: false,
resolveWithFullResponse: true
};
rp(todayOptions)
.then(function (response){
console.log(response.body); //RETURNS BODY
console.log(response.body.data); //RETURNS UNDEFINED EVEN THOUGH IT EXISTS
})
.catch(function(error){
console.log(error);
});
我敢打赌 response.body
是一个字符串化的 JSON 对象。尝试解析它。请求承诺 returns 有时是字符串化对象。
console.log(JSON.parse(response.body).data);
您需要将 json
选项设置为 true:
var todayOptions = { uri: `http://mlb.mlb.com/gdcross/components/game/mlb/year_${year}/month_${month}/day_${day}/master_scoreboard.json`,
simple: false,
resolveWithFullResponse: true,
json: true
};
如果这对您仍然不起作用,因为它对我不起作用,请尝试将其添加到您的选项中:
编码:'utf8'
这为我解决了所有问题。您甚至不必搞乱 json.parse 或 json.stringify 复利。如果您的选项中已有 json: true,则响应已经是一个 json 对象。
正在尝试通过请求承诺执行请求,但无法正常工作。
查看下面的评论。
有人可以给我解释一下这个 PiA 吗?
提前致谢
var todayOptions = { uri: `http://mlb.mlb.com/gdcross/components/game/mlb/year_${year}/month_${month}/day_${day}/master_scoreboard.json`,
simple: false,
resolveWithFullResponse: true
};
rp(todayOptions)
.then(function (response){
console.log(response.body); //RETURNS BODY
console.log(response.body.data); //RETURNS UNDEFINED EVEN THOUGH IT EXISTS
})
.catch(function(error){
console.log(error);
});
我敢打赌 response.body
是一个字符串化的 JSON 对象。尝试解析它。请求承诺 returns 有时是字符串化对象。
console.log(JSON.parse(response.body).data);
您需要将 json
选项设置为 true:
var todayOptions = { uri: `http://mlb.mlb.com/gdcross/components/game/mlb/year_${year}/month_${month}/day_${day}/master_scoreboard.json`,
simple: false,
resolveWithFullResponse: true,
json: true
};
如果这对您仍然不起作用,因为它对我不起作用,请尝试将其添加到您的选项中:
编码:'utf8'
这为我解决了所有问题。您甚至不必搞乱 json.parse 或 json.stringify 复利。如果您的选项中已有 json: true,则响应已经是一个 json 对象。