Python中如何从SmartAPI返回的JSON数据集提取jwtToken值
问题原因
代码无法正常取到jwtToken有三个核心问题:
- 执行顺序错误:
refreshToken = data['data']['refreshToken']写在generateSession调用之前,此时data变量还未定义,会触发NameError。 - 多余的解析操作:SmartConnect的
generateSession方法本身返回的就是Python原生字典结构,不需要再调用json.loads()做二次解析,传入字典给json.loads()会触发类型错误。 - 取值方式错误:Python字典不支持
.属性访问方式,必须通过键名索引逐层取值。
正确实现代码
from smartapi import SmartConnect from smartapi import SmartWebSocket # 初始化连接对象 obj = SmartConnect(api_key="vhidyTNq") # 先调用接口生成会话,拿到返回的字典数据 data = obj.generateSession("P78013","Ujhdy@2") # 按字典层级直接取值即可 jwtToken = data['data']['jwtToken'] refreshToken = data['data']['refreshToken'] feedToken = obj.getfeedToken() # 初始化websocket连接 ss = SmartWebSocket(feedToken,"P78013") # 打印验证结果,输出格式和预期完全一致 print(f"jwtToken='{jwtToken}'")
补充说明
- 示例代码移除了当前登录逻辑用不到的
pandas、json导入,如果后续有数据处理、原始JSON字符串解析需求可以自行加回。 - 如果你后续拿到的接口返回是未解析的JSON字符串格式,才需要用
json.loads()转成字典,转换后依然要通过['键名']的方式取值,不能直接用点访问属性。
内容的提问来源于stack exchange,提问作者jyotirmay
相关产品推荐
相关产品推荐

