Python中从JSON响应提取特定对象item的实现方案
统一处理单个对象/数组形式的item数据
解决这个问题的核心是把单个对象统一转换成数组格式,这样后续就能用同一段循环逻辑处理两种情况,不用额外区分判断。
具体实现步骤
- 从字典中提取出
item数据 - 判断
item的类型:- 如果是字典(单个对象),将其包装为包含该字典的列表
- 如果已经是列表,直接使用
- 遍历处理后的列表,将每条数据存入MySQL
代码示例
a_dict = {"ZWAS.Response": {"DATA_TT": { "item": {"MNNS": "000000000100000134", "CBBB": "16667.000", "HARO": "004H", "MSPR": "000000004000000059", "BDD": "2022-10-16", "MTT": "04:15:00"}}}} b_dict = {"ZWAS.Response": {"DATA_TT": {"item": [ {"MNNS": "000000000100000134", "CBBB": "16667.000", "HARO": "004H", "MSPR": "000000004000000059", "BDD": "2022-10-16", "MTT": "04:15:00"}, {"MNNS": "000000000100000134", "CBBB": "16667.000", "HARO": "004H", "MSPR": "000000004000000059", "BDD": "2022-10-16", "MTT": "04:15:00"}]}}} def process_item(data_dict): # 提取item数据 k1 = data_dict['ZWAS.Response'] k2 = k1['DATA_TT'] item = k2['item'] # 统一转换为列表格式 items_list = [item] if isinstance(item, dict) else item # 遍历处理每条数据(此处用打印模拟存入MySQL操作) for idx, data in enumerate(items_list): print(f"处理第{idx+1}条数据: {data}") # 在此添加MySQL入库代码,例如: # cursor.execute("INSERT INTO your_table (MNNS, CBBB, HARO, MSPR, BDD, MTT) VALUES (%s, %s, %s, %s, %s, %s)", # (data['MNNS'], data['CBBB'], data['HARO'], data['MSPR'], data['BDD'], data['MTT'])) # 测试单个对象场景 print("=== 处理单个item对象 ===") process_item(a_dict) # 测试数组场景 print("\n=== 处理item数组 ===") process_item(b_dict)
代码说明
isinstance(item, dict)用来快速判断item是否为单个字典对象- 转换为列表后,无论原数据是单个还是多个,都能通过
for data in items_list统一遍历 - 循环内部可直接复用MySQL入库逻辑,无需额外分支判断
内容的提问来源于stack exchange,提问作者Aamer Hamdani
相关产品推荐
相关产品推荐

