如何在Node.js中从Web地址加载JSON数据?实例问题求解
嘿,你这个问题我太熟了——require()根本没法直接加载远程URL,它是用来加载本地文件或者已安装的npm包的,所以你那行代码肯定跑不起来。下面给你几种靠谱的实现方式,按需选就行:
方法1:用Node.js内置的
https模块(无额外依赖) 如果不想安装第三方包,用Node.js自带的https模块就能搞定,代码如下:
const https = require('https'); https.get('https://blockchain.info/ticker', (res) => { let rawData = ''; // 逐步接收响应数据片段 res.on('data', (chunk) => { rawData += chunk; }); // 数据接收完成后解析JSON res.on('end', () => { try { const btcTicker = JSON.parse(rawData); console.log('BTC实时行情:', btcTicker); // 举个例子:获取人民币计价的当前价格 console.log('BTC人民币价格:', btcTicker.CNY.last); } catch (err) { console.error('解析JSON失败:', err.message); } }); }).on('error', (err) => { console.error('请求远程数据出错:', err.message); });
方法2:用第三方库
axios(代码更简洁) 如果觉得内置模块的回调写法不够直观,axios是个不错的选择,先安装依赖:
npm install axios
然后用async/await写异步请求,可读性拉满:
const axios = require('axios'); async function fetchBtcTicker() { try { const response = await axios.get('https://blockchain.info/ticker'); const btcTicker = response.data; console.log('BTC实时行情:', btcTicker); } catch (err) { console.error('请求或解析出错:', err.message); } } // 调用函数 fetchBtcTicker();
方法3:用Node.js 18+内置的
fetch API 从Node.js 18版本开始,官方内置了和浏览器一致的fetch API,不需要装任何依赖,写法最简洁:
async function fetchBtcTicker() { try { const response = await fetch('https://blockchain.info/ticker'); const btcTicker = await response.json(); console.log('BTC实时行情:', btcTicker); } catch (err) { console.error('请求或解析出错:', err.message); } } fetchBtcTicker();
小提示
- 不管用哪种方法,都要做好错误处理:网络请求可能超时、失败,返回的内容也可能不是合法JSON,所以
try/catch或者错误监听一定要加。 - 如果需要频繁获取数据,建议加个缓存机制,避免短时间内重复请求被服务器限流。
内容的提问来源于stack exchange,提问作者CoolboyRevamped
相关产品推荐
相关产品推荐

