JSON.parse,位于0的JSON中的意外标记T.
所以我有一个小的Web套接字程序从网站上提取数据。有时它每秒达到最多6个查询,当它崩溃时。我放了一个if语句来检查是否收到了请求,但它似乎不起作用。所有这些混乱的代码部分是这样的:
Request.get(url, (error, response, body) => {
if(error) {
var flag = 1;
return console.dir(error);
}
if(flag == 1)
{
return;
}
var object = JSON.parse(body); <-- error points here
if(!object || !object.data || !object.data.items || typeof object.data.items[0] === 'undefined')
{
return;
} ...
输出错误说明:
未定义:1 请求太多。请稍后再试。
SyntaxError:位于0的JSON中的意外标记T.
在JSON.parse() 在Request.get [as _callback](/home/pi/Desktop/BitBot/test.js:702:23) 在Request.self.callback(/home/pi/Desktop/BitBot/node_modules/request/request.js:185:22) 请求处的Request.emit(events.js:182:13)。 (/home/pi/Desktop/BitBot/node_modules/request/request.js:1161:10)在IncomingMessage的Request.emit(events.js:182:13)。 (/home/pi/Desktop/BitBot/node_modules/request/request.js:1083:12)在EndReadableNT的IncomingMessage.emit(events.js:187:15)的Object.onceWrapper(events.js:273:13) (_stream_readable.js:1094:12)
任何想法如何解决这一问题?
回答如下:发生了什么以及为什么
当您达到远程网站设置的速率限制时,它将返回字符串“请求太多。请稍后再试”。
如您所知,这不是有效的JSON。如果您尝试使用JSON.parse()
此字符串,则会出现错误。
let str = "Too many requests. Please try again later.";
console.log(JSON.parse(str));