Python中如何基于JSON数组某key的值查询对应元素另一key的值
报错原因
你搞混了 json.dumps() 和 json.loads() 的作用:
json.dumps()是把Python对象转为JSON字符串,你执行完jsonObject = json.dumps(response)后,jsonObject已经是纯字符串类型,只能用整数下标访问字符,你尝试用字符串作为索引取值,自然会抛出string indices must be integers错误。- 哪怕需要做格式转换,JSON字符串转Python对象用的是
json.loads(),和dumps作用完全相反。 - 额外说一句,你写的代码里
response本身已经是Python列表+字典结构,根本不需要做JSON转换,直接遍历就能用。
正确实现代码
import json # 如果你实际拿到的response是接口返回的JSON字符串,才需要执行下面的转换 # 示例:response_str = '[{"id": "1", "name": "TimeCheck1"},{"id": "2", "name": "TimeCheck2"}]' # response = json.loads(response_str) # 你当前代码里的response已经是可直接操作的Python对象,直接遍历即可 response = [{'id': '1', 'name': 'TimeCheck1'},{'id': '2', 'name': 'TimeCheck2'}] target_name = 'TimeCheck1' target_id = None for item in response: if item['name'] == target_name: target_id = item['id'] break if target_id: print(target_id) else: print("no")
补充说明
你原来的 if a in jsonObject 逻辑也不对,这只是判断字符串里有没有对应子串,根本不是判断列表元素的name字段是否匹配,哪怕没有类型报错,也拿不到你要的id结果。
内容的提问来源于stack exchange,提问作者abc def
相关产品推荐
相关产品推荐

