Solana程序报错:TypeError: GetAccountInfoResp对象不可下标访问
解决Solana开发中的TypeError: 'GetAccountInfoResp' object is not subscriptable
问题根源
你使用solana-py调用get_account_info后,返回的是solders.rpc.responses.GetAccountInfoResp结构体对象,而非你预期的JSON字典,因此无法通过["result"]这类下标语法访问数据,必须改用对象属性调用的方式。
修复代码
将下标访问替换为属性访问即可解决问题:
import struct from pprint import pprint as p from solana.rpc.api import Client from solders.pubkey import Pubkey from solana.transaction import Transaction from base58 import b58encode, b58decode as b58d from base64 import b64decode as b64d b58e = lambda x:b58encode(x).decode('ascii') uri="http://api.mainnet-beta.solana.com" client=Client(uri) usdc=Pubkey.from_string("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v") ai = client.get_account_info(usdc) p(ai) # 改用属性访问获取账户数据 account_data = ai.value.data[0]
核心说明
GetAccountInfoResp对象的属性对应原JSON层级:- 原
["result"]["value"]对应对象的ai.value属性 - 原
["data"][0]对应ai.value.data[0]
- 原
- 若需查看对象所有可访问属性,可执行
dir(ai)或pprint(vars(ai))
内容的提问来源于stack exchange,提问作者Juan Hoyos
相关产品推荐
相关产品推荐

