如何过滤Skinport API返回的JSON数据,筛选符合条件的条目?
过滤Skinport API返回的商品数据
核心思路很直接:先把API返回的JSON字符串转成程序可操作的数据结构(比如列表、字典),再按你的条件逐条筛选,最后把符合要求的条目存起来。下面用Python和JavaScript分别举例,你可以对应自己用的编程语言调整。
步骤1:解析JSON数据
不管用什么语言,第一步都是把API返回的JSON文本转成代码里能直接操作的对象。比如Python里用json.loads(),JavaScript里直接用JSON.parse()。
步骤2:按条件过滤(Python示例)
假设你已经通过API请求拿到了响应文本,先转成商品列表,再筛选:
import json # 假设API返回的响应文本存在这里 response_text = "..." # 你的API请求返回内容 # 转成Python列表,每个元素是单个商品的字典 products = json.loads(response_text) # 定义你的过滤条件,可按需调整 target_hash_name = "AK-47 | Redline (Field-Tested)" # 可选,留空则不过滤名称 min_price = 10.0 # 可选,设为None则不过滤价格 filtered_items = [] for product in products: # 检查名称是否匹配(如果指定了名称) name_ok = True if target_hash_name: name_ok = product.get("market_hash_name") == target_hash_name # 检查价格是否达标(如果指定了最低价格) price_ok = True if min_price is not None: # 注意:Skinport返回的price可能是字符串,要转成浮点数 product_price = float(product.get("price", 0)) price_ok = product_price >= min_price # 两个条件都满足才保留 if name_ok and price_ok: # 提取你需要的信息,按需增减字段 saved_info = { "商品名称": product["market_hash_name"], "价格": product_price, "商品链接": product["url"], "磨损度": product.get("wear_float") } filtered_items.append(saved_info)
步骤3:保存筛选结果
把筛选后的结果存成JSON文件,方便后续查看或使用:
# 写入本地JSON文件 with open("筛选后的Skinport商品.json", "w", encoding="utf-8") as f: json.dump(filtered_items, f, indent=2, ensure_ascii=False)
JavaScript示例(前端/Node.js)
如果用JS,逻辑差不多:
// 假设已拿到API返回的商品数组 const products = [...]; const targetHashName = "AK-47 | Redline (Field-Tested)"; const minPrice = 10.0; const filteredProducts = products.filter(product => { const nameMatch = targetHashName ? product.market_hash_name === targetHashName : true; const priceMatch = minPrice !== null ? parseFloat(product.price) >= minPrice : true; return nameMatch && priceMatch; }); // 转成JSON字符串保存或使用 const filteredJson = JSON.stringify(filteredProducts, null, 2); // 比如在Node.js里写入文件 // fs.writeFileSync('filtered-items.json', filteredJson, 'utf8');
注意事项
- 先打印一个商品条目确认字段名:比如Skinport返回的价格字段是
price,市场名称是market_hash_name,别写错字段导致筛选失败 - 价格字段可能是字符串类型,必须转成数字再做比较,否则会出现字符串比较的错误(比如"9" > "10"会返回true)
- 如果要同时筛选多个商品名称,可以把
target_hash_name改成数组,用product.get("market_hash_name") in ["名称1", "名称2"]判断 - 若只需要单一条件(比如只过滤价格),直接把另一个条件的判断设为
True即可
内容的提问来源于stack exchange,提问作者Dallin Kump
相关产品推荐
相关产品推荐

