处理来自Websockets订阅的响应
答复如下:
{'jsonrpc': '2.0', 'method': 'subscription', 'params': {'channel': 'book.BTC-PERPETUAL.none.1.100ms', 'data': {'timestamp': 1588975154127, 'instrument_name': 'BTC-PERPETUAL', 'change_id': 19078703948, 'bids': [[10019.5, 8530.0]], 'asks': [[10020.0, 506290.0]]}}}
我试图通过json.loads()
到达"bids"
和"asks"
数组中的第一个也是唯一的值
代码如下所示:
async def __async__get_ticks(self):
async with self.ws as echo:
await echo.send(json.dumps(self.request))
while True:
response = await echo.receive()
responseJson = json.loads(response)
print(responseJson["params"]["data"])
错误是这样的:
print(responseJson["params"]["data"])
KeyError: 'params'
但是我尝试,它不想捕获"jsonprc"
之后的任何JSON,因为它成功地返回了2.0
。除此之外的任何事情都会出现错误
我试着使用.get()
,它有助于更深一层,但仍然不能更深
关于如何正确设置格式并达到bids
和asks
的任何想法
先谢谢你
我建议使用
dict.get()
方法,但请确保在查询预期具有嵌套dict的词典时将其设置为返回空词典默认情况下(如果没有为
dict.get()
指定第二个参数),它将返回None
。这就解释了为什么你只能深入一层下面是一个例子:
相关问题 更多 >
编程相关推荐