Python结合BS4提取嵌套JSON全量inventoryLevel值的方法
问题定位
现有代码硬编码了单个SKU的固定键'284101218804070',仅会取该键对应的值,无法遍历item下其余12个尺码对应的SKU映射,自然拿不到全量库存数据。
调整方案
由于jsontwo['content']下的每个item都是「SKU编号-对应详情字典」的映射结构,只需要在原有循环中嵌套一层遍历,取出所有SKU的详情字典,即可批量提取全量库存字段。
直接打印全量库存的实现代码
for item in jsontwo['content']: # 遍历当前商品条目下所有SKU的详情字典 for sku_detail in item.values(): # 增加容错:仅处理包含库存字段的条目,避免无关字段触发报错 if isinstance(sku_detail, dict) and 'inventoryLevel' in sku_detail: size = sku_detail.get('sizeValue', '未标注尺码') inv_status = sku_detail['inventoryLevel'] print(f"尺码 {size} -> 库存状态:{inv_status}")
结构化存储库存数据的实现
如果需要后续基于库存状态做监控判断、告警触发,可以将结果收集到结构化列表中:
full_inventory = [] for item in jsontwo['content']: for sku_detail in item.values(): if isinstance(sku_detail, dict) and 'inventoryLevel' in sku_detail: full_inventory.append({ "尺码": sku_detail.get('sizeValue'), "库存状态": sku_detail['inventoryLevel'] })
注意事项
- 该逻辑不需要针对每个尺码单独硬编码SKU键,兼容接口返回任意数量的SKU条目
- 加入的字段判断逻辑可以兼容接口返回异常的场景,避免个别条目缺字段导致脚本整体中断
内容的提问来源于stack exchange,提问作者amz
相关产品推荐
相关产品推荐

