如何从Steam市场API响应提取median_price并转为可运算数值?
解决Steam市场价格字符串转数值的问题
嘿,我来帮你搞定这个价格转换的事儿。你需要对原代码做两个关键修改,就能把带$的价格字符串转成纯数值,方便后续求和运算:
1. 解析JSON响应字符串
原代码在end事件里直接打印了原始的JSON字符串,你得先把它转换成JavaScript对象,才能访问里面的median_price字段。用JSON.parse()就能轻松搞定这个。
2. 清理价格字符串并转换为数值
拿到median_price后,先去掉开头的$符号,再用parseFloat()把它转成浮点数(如果是整数场景也可以用Number(),但浮点数更适配价格这类带小数的场景)。
修改后的完整代码
const https = require('https'); const item = 'M4A1-S | Decimator (Field-Tested)'; let body = ''; https.get(`https://steamcommunity.com/market/priceoverview/?appid=730&market_hash_name=${encodeURIComponent(item)}`, res => { res.on('data', data => { body += data; }); res.on('end', () => { // 第一步:解析JSON字符串为JS对象 const marketData = JSON.parse(body); if (marketData.success) { // 第二步:处理价格字符串转数值 const medianPrice = parseFloat(marketData.median_price.replace('$', '')); console.log('转换后的中位数价格:', medianPrice); // 如果要多值求和,你可以把这些数值存到数组里,比如: // const priceArray = []; // priceArray.push(medianPrice); // 之后用 priceArray.reduce((sum, price) => sum + price, 0) 计算总和 } else { console.error('获取价格数据失败'); } }); }).on('error', error => console.error(error.message));
额外优化点
我还加了两个实用的小优化:
- 用
encodeURIComponent()处理item参数,避免空格、竖线这类特殊字符导致请求出错,原代码直接拼接参数可能会有隐患。 - 增加了
success字段的判断,防止接口返回失败时解析JSON出错。
这样处理后,medianPrice就是纯数值5.09了,你可以把多个这样的数值放到数组里,用reduce方法轻松完成求和运算。
内容的提问来源于stack exchange,提问作者jogge
相关产品推荐
相关产品推荐

