Python中如何处理API返回结果为列表或字典的情况?
优化API返回数据处理的几种方案
1. 统一格式为列表(最直接的代码优化)
把单个字典格式的books包装成列表,之后只需要写一遍遍历处理逻辑,彻底消除重复代码:
import json # 假设已完成API响应解析 responseJson = json.loads(response.text) # 统一转换为列表格式 books = responseJson["books"] books_list = [books] if isinstance(books, dict) else books # 后续只针对列表做统一处理,复杂逻辑仅需编写一次 for book in books_list: # 这里编写你的复杂处理逻辑,比如字段提取、业务计算等 print(f"处理书籍: {book['bookname']}")
这里用isinstance替代type()判断更稳妥,它能兼容可能的子类情况,属于Python类型判断的最佳实践。
2. 封装处理函数(进一步解耦代码)
如果处理逻辑较为复杂,可以把格式转换和业务处理封装成独立函数,让代码结构更清晰:
def process_books(books_data): # 内部完成格式统一 books_list = [books_data] if isinstance(books_data, dict) else books_data # 执行统一的业务处理 processed_result = [] for book in books_list: # 这里编写复杂处理逻辑,比如字段映射、数据校验等 processed_book = { "display_name": book["bookname"], # 其他处理后的业务字段 } processed_result.append(processed_book) return processed_result # 调用时直接传入解析后的books数据 final_result = process_books(responseJson["books"])
3. 源头优化(最彻底的解决方案)
如果有条件和API开发方沟通,建议统一返回列表格式:哪怕只有一本图书,也返回{"name": "A", "books": [{"bookname": "BookA"}]}。这样前端代码完全无需处理两种格式,从根源上避免了类型判断的麻烦。
内容的提问来源于stack exchange,提问作者Shomi
相关产品推荐
相关产品推荐

