Python解析Wi-Fi控制器API JSON时获取id和name键的问题
解决方法:提取嵌套在list数组中的id和name
你现在的问题很明确——接口返回的顶层字典里确实没有id和name,这两个字段是嵌套在list数组的每个子元素里的。你之前直接用jsonResponse.get('id')肯定拿不到结果,因为它根本不在顶层结构里。
给你修改后的代码,直接提取你需要的信息:
import requests # Method that retrieves all zones def getZones(): r = requests.get("your_url_here", verify=False, cookies=cookie) jsonResponse = r.json() # 先获取list数组,默认空列表避免接口无返回时报错 zones = jsonResponse.get('list', []) # 遍历每个zone元素,提取id和name zone_info_list = [] for zone in zones: # 用get方法可以避免某个元素缺少id/name时抛出KeyError zone_info = { 'id': zone.get('id'), 'name': zone.get('name') } zone_info_list.append(zone_info) # 打印验证结果 print("提取到的区域信息:") for info in zone_info_list: print(f"ID: {info['id']}, Name: {info['name']}") return zone_info_list
如果你喜欢更简洁的写法,用列表推导式一行就能搞定:
zone_info_list = [{'id': z.get('id'), 'name': z.get('name')} for z in jsonResponse.get('list', [])]
关键说明:
- 你不需要“手动指定dict的键”,而是要进入嵌套的list结构去提取子元素里的键
- 用
get()方法替代直接索引(比如zone['id']),可以避免当某个zone元素缺少id或name字段时程序崩溃 - 最终返回的
zone_info_list就是一个只包含你需要的id和name的字典列表,方便后续处理
内容的提问来源于stack exchange,提问作者kaspertje100
相关产品推荐
相关产品推荐

