今天用nodejs请求天气数据时遇到使用JSON.parse()解析数据时始终报错的问题,仔细调试后才发现获取到的json字符串莫名的丢掉了一部分;
const https = require('https'); https.request({ hostname: url, path: '/rot', method: 'GET', headers: { 'Content-Type': 'application/json; chartset=utf-8' } }, res => { res.setEncoding('utf-8'); res.on('data', chunk => { console.log(chunk); }); });
根据上段代码 获取出来的数据 chunk 只是部分数据,而不是完整的数据,解决此问题,只需要在回调中更改部分代码就可以了;
// 回调应改为: res => { res.setEncoding('utf-8'); let str = ''; //用变量存储; res.on('data', chunk => { str += chunk; }); res.on('end', ()=> { console.log(str); }); }
至此,此时的str就是完整的返回数据了, JSON.parse(str) 也就不会报错;

我的微信
爱生活、爱学习的小伙伴可以通过扫一扫二维码添加我的个人微信一起交流!
评论