Python如何从requests返回的嵌套JSON中提取final_balance字段
报错原因
接口返回的JSON是两层嵌套字典结构:
- 最外层字典的键是你传入查询的公钥地址(即代码里的
pub变量,示例返回里的键为0jhke23k23k4j4k3434kk54l54) final_balance、total_received这两个字段是内层字典的键,归属于对应公钥地址的余额信息对象
你直接在最外层字典查询final_balance键,外层字典不存在这个键,自然触发KeyError。另外你写的打印代码里r.json()['total_received']']末尾多了一个多余的单引号,即便key路径正确也会触发语法错误,需要删掉。
正确提取代码
先缓存解析后的JSON结果避免重复解析,先通过pub作为键取到内层的余额信息对象,再从内层对象取目标字段即可:
import requests pub = "你的公钥地址" url = "https://blockchain.info/balance?active="+pub r = requests.get(url) resp = r.json() # 取对应地址的余额数据 addr_data = resp[pub] final_balance = addr_data['final_balance'] total_received = addr_data['total_received'] # 打印结果 print("{} {:20} {:20}".format(pub, final_balance, total_received))
容错优化
如果存在地址格式错误、接口返回异常的场景,可以加一层判断避免程序中断:
url = "https://blockchain.info/balance?active="+pub r = requests.get(url) resp = r.json() if pub in resp: addr_data = resp[pub] print("{} {:20} {:20}".format( pub, addr_data['final_balance'], addr_data['total_received'] )) else: print(f"地址{pub}无有效返回数据")
内容的提问来源于stack exchange,提问作者AMendis
相关产品推荐
相关产品推荐

