Python解析XML/JSON接口返回值如何筛选仅含Site为12的对象
解决方案
以下是修改后可直接运行的代码,同时修复了原代码的潜在问题并实现了过滤需求:
import requests import json def get_stock(sku): params = {'ItemId': sku} base_url = 'http://10.0.0.25/api/GetSku' response = requests.get(base_url, params=params) json_parsed = json.loads(response.text) # 过滤仅保留Site为12的条目 filtered_result = [item for item in json_parsed if item.get('Site') == '12'] return filtered_result # sku为字符串类型,需用引号包裹 print(get_stock('101025HRLONDON'))
修改说明
- 修复原代码两处逻辑/语法问题:
- 将
response.read替换为response.text,requests库的响应对象需通过text属性读取返回的文本内容 - 移除了base_url末尾多余的
?ItemId=,参数会通过params自动拼接,避免重复传参 - 调用函数时给sku参数添加了引号,字符串类型参数不包裹引号会触发语法错误
- 将
- 新增的过滤逻辑用列表推导式遍历返回的JSON数组,匹配
Site字段值为"12"的对象。如果确认符合条件的结果最多只有一条,也可以将返回值改为return filtered_result[0] if filtered_result else {},直接返回单个字典同时处理无匹配结果的异常场景。
输出结果
运行后将返回符合要求的数据:
[ { "ItemId": "101025HRLONDON", "Site": "12", "Warehouse": "17", "availablePhysical": 1.0 }, { "ItemId": "101025HRLONDON", "Site": "12", "Warehouse": "34", "availablePhysical": 1.0 } ]
内容的提问来源于stack exchange,提问作者Ghazi Mohammed
相关产品推荐
相关产品推荐

